2016-11-09 3 views
0

enter image description here통역 파이썬 프로파일

나는 간단한 프로그램을 프로파일 스파이더 IDE에 프로파일 러를 사용하고 있습니다. 함수 중 하나 인 make_geology이 코드에서 가장 중요한 부분입니다. 24.7 시간 단위를 사용하는 것으로 보입니다 (초입니까?). 그러나 make_geology (모든 항목이 노란색으로 강조 표시된 모든 통화)을 보면 시간 합계가 최대 1.3 시간 단위에 불과합니다.

기능에 소요 된 시간을 측정하고 할당하는 것을 오해하고 있습니까? make_geology = make_geology 내부의 모든 것에 소요 된 시간의 합계

+0

는 [*이 방법 *]를 해봤 (http://stackoverflow.com/a/4299378/23771)? 한 가지는 절대적인 측정이 아닌 퍼센트에 민감합니다. 따라서 돼지가 무엇인지 직접 알려줍니다. 또한 이유를 알려줍니다. –

답변

0

make_geology에는 다른 구성 요소 (함수)에 "오프로드"되지 않는 함수 호출 자체 내에서 수행되는 일부 기능이있는 것처럼 보일 수 있습니다. . 이 같은 것을 상상해

def add_and_count(mylist, mynumber): 
    i = 0 
    while i < mynumber: 
     i = i + 1 
    mylist.append(i) 

을 mynumber이 0 인 경우,리스트의 APPEND 호출을 실행하는 시간과 거의 동일해야 add_and_count을 실행하는 시간을. mynumber가 큰 경우 list.append는 버킷에 드롭입니다.

1

이 문제를 해결하기 위해 this PR을 제공했습니다.

는 초기에 프로파일은 다음과 같습니다 profiler_before

최종 결과는 다음과 같습니다 spyder 3 1 0 dev0 python 3 5 _001

어떤 제안이나 수정은 환영합니다.

안부

윌리엄 Trigos