2011-05-11 2 views
18
나는 numpy 스크립트를 프로파일 파이썬의 (V2.4) profile 모듈을 사용하고, 다음과 같은 항목이 실행 시간의 대부분을 차지하기 위해 나타납니다

(?) :파이썬의 프로필 모듈 : <string> : 1

ncalls tottime percall cumtime percall filename:lineno(function) 
256/1 0.000 0.000 7.710 7.710 <string>:1(?) 

불행히도 외관상으로는 Google에게 어려움을 겪습니다.

정확히 어떻게되는지 알아 내려면 어떻게해야합니까? python -m profile -s cumulative script.py

+0

프로파일 러를 실행하기 위해'profile.run()'을 사용하고 있습니까? 그러면 ' : 1'은이 함수에 전달한 명령문 문자열의 첫 번째 라인을 나타냅니다. 프로파일 러를 다른 방식으로 호출하는 경우 지정하십시오. –

+0

@Sven Marnach : 좋은 점,이 정보를 질문에 추가했습니다. – NPE

+1

당신이 더 높은 성능을 원하기 때문에 당신이 묻는다고 가정하면, [시도해보십시오] (http://stackoverflow.com/questions/4295799/how-to-improve-performance-of-this-code/4299378#4299378). –

답변

19

이 줄을 무시 다음과 같이

편집 프로파일 러는 쉘에서 실행됩니다. 프로파일 러가 구현되는 방법의 결과물입니다. 유용하다고 말하는 것은 아닙니다. 0.000의 "tottime"값을보십시오. "tottime"은 "< 문자열 > : 1 (?)"을 실행하는 데 소요 된 시간입니다. 그래서 여기서 시간을 낭비하지 않습니다. "cumtime"과 "percall"은 아이들에서 보낸 시간을 포함하기 때문에 커집니다. 자세한 내용은 http://docs.python.org/library/profile.html#cProfile.run을 참조하십시오.

+1

하지만 * 가장 큰 * tottime이' : 1 ()'이면? – endolith

+4

' : 1 ()'은 호출 된 엔트리 포인트 Python 스크립트에서 최상위 코드입니다. 따라서 모든 코드가 "foo.py"에서 최상위 레벨이고'python foo.py'를 수행하면' : 1 ()'에 대해 높은 시간을 보게 될 것입니다. "최상위 (top-level)"는 모든 함수 정의 안에 있지 않다는 것을 의미합니다. –