2013-01-12 2 views
2

파이썬 코드 실행 중 객체의 라이프 사이클을 추적 할 수있는 방법이 있습니까? 콜백 설정을위한 sys.settrace 함수에 대해 알고 있습니다. 각 함수 호출이나 코드 줄을 멈출 수는 있지만이 과정에서 "살아있는"개체에 대한 액세스 권한을 얻으려면 어떻게해야합니까? 나는 프로그램을 추적하여 각 정지 후 무작위 검사를 할 수 있도록하고 싶습니다. 마치 소스 코드의 정지 지점에 코드를 추가 한 것처럼 말입니다.파이썬 객체 수명주기 추적

+0

확실하지로 사용하기 '시도'가있는 경우

gc.get_referrers(*objs) gc.get_referents(*objs) gc.is_tracked(obj) 

간단하게 확인하려면 :이 매개 변수로 객체를 사용하여 몇 가지 기능이 일부 정보에 대한 오브젝트 존재를 제공 할 수

Garbage Collector 여기서 달성하려고 노력합니다. 어떤 종류의 정보를 수집하려고합니까? –

+0

예를 들어,이 단계에서 func'func1'에 전달 된 프로그램의 실행과 어떤 유형의 객체'obj1'가 생성 된 allready runned가 있습니다. 이 obj1을 검사하고 싶습니다. 예를 들어'dir (obj1)'에서 결과를 얻거나'obj1'의 클래스를 검사합니다. – exbluesbreaker

+1

그리고'import pdb; pdb.set_trace()'? 그러면 그 시점에서 대화 형 디버거가 생깁니다. 객체 생성 자체는 추적 가능하지 않으며, 추적을'__init__' 또는'__new__' 함수 자체에 넣으십시오. –

답변

2

최대 CPython에서 gc (garbage collector) 모듈로 확장 할 수 있습니다. 목적은 당신이 무엇을 described here

+0

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. –

+0

링크는 python 문서에 제공되었습니다. 사실 OP 질문에 대해 언급하는 것이 나을 것이지만 아직 할 수있는 권리가 없습니다. 내가 링크에서 일부 정보를 붙여 넣습니다. –