2013-10-06 4 views
2

저는 벽시계와 CPU 시간을 분리하여 파이썬에서 함수 성능을 측정하는 방법을 찾고 있습니다.함수의 CPU 실행 시간과 벽시계 실행 시간을 별도로 Python 코드 (터미널이 아님)로 측정하는 방법은 무엇입니까?

저는 파이썬 프로파일 러를 살펴 봤지만 프로그램을 스캔하도록 설계되었으며 기능 만하는 것은 아닙니다. http://docs.python.org/2/library/profile.html에서 :

주 프로파일 모듈하지 벤치마킹 목적으로, 특정 프로그램의 실행 프로파일을 제공하도록 설계된다 (이 경우, 합리적으로 정확한 결과가 timeit). 이것은 특히 C 코드에 대한 파이썬 코드 벤치마킹에 적용됩니다. 프로파일 러는 파이썬 코드에 오버 헤드를 발생 시키지만 C 레벨 함수에는 오버 헤드를 발생시키지 않으므로 C 코드는 어떤 파이썬보다 빠릅니다.

나는 timeit 모듈을 시도했다 : http://docs.python.org/2/library/timeit.html,하지만 그것은 CPU와 벽시계 시간의 분리를 지원하지 않는 것 같습니다. 내가 아는 한, 그것은 단지 전체 실행 시간을 측정합니다.

$ time python yourprogram.py 

real 0m1.028s 
user 0m0.001s 
sys  0m0.003s 

하지만 그 대신 명령 줄에서 호출하는, 내가 파이썬 코드에서 호출해야합니다 내가 무엇을 찾고

이 같은 것입니다. R에서 system.time()와 같은

뭔가 :

print(system.time(replicate(repeats, factorialRecursive(150)))) 
user system elapsed 
0.041 0.001 0.041 

은 어떻게 파이썬에서 이것을 달성 할 수 있습니까?

답변

4

The resource modulegetrusage이 있습니다. time 명령과 마찬가지로 사용자, 시스템 및 월간 시계를 개별적으로 검색 할 수 있어야합니다.

+0

함수의 실행 시간을 측정하는 데 해당 모듈을 사용하는 방법을 알아낼 수 없습니다. 나는 사용하려고했습니다 = resource.getrusage (resource.RUSAGE_SELF) 함수 내에서 측정하고 ru_stime 및 ru_utime 필드를 호출하고 싶지만 시간이 다른 함수 호출 사이에 추가됩니다. 그것을하는 방법을 알고 있습니까? 여기에 새 질문을 만들었습니다. http://stackoverflow.com/q/19204740/1690799 – Rob

관련 문제