2017-02-17 3 views
0

cProfile을 사용하는 경우에도 내 모듈을 가져오고 싶습니다 (모든 함수 이름 나열). 어떻게해야합니까?cProfile 실행 중에 현재 모듈 가져 오기

명확히하기 위해 내 자신의 모듈에서 일부 내성 검사를 사용하고 있지만 -m cProfile을 실행하면 sys.modules[__main__]은 내 모듈을 반환하지 않습니다. 과 같이

#!/usr/bin/env python3 
import sys 
print(sys.modules[__name__]) 

실행이 :

$ ./modtest.py 
<module '__main__' from './modtest.py'> 
$ python -m cProfile ./modtest.py 
<module 'cProfile' from '...cProfile.py'> 

를 내가 마지막 줄 from './modtest.py' 말 것을 얻을 수있는 방법

는 modtest.py를 생성, 재생하려면?

답변

1

모듈을 cProfile의 인수로 제공하면 sys.modules에서 모듈 개체를 가져올 수 없습니다. cProfile도 모듈을 가져 오지 않고 실행 만하면 실행 완료 후 sys.modules에서 가져올 수 없습니다.

-m 스위치를 통해 실행하면 __main__은 반드시 cProfile을 가리키며 변경 사항이 없습니다.

당신은 항상, sys.argv[0]에서 모듈 이름을 잡아 importlib로 직접 가져오고 이후에 함수 이름을 나열 할 수 있습니다.