2011-09-15 6 views
1

나는 여러 날 동안 실행되는 python 프로그램을 가지고 있습니다. 메모리 사용량이 많이 증가하지는 않지만 프로그램이 느려지고 느려집니다. 모든 함수 호출을 나열하는 도구 또는 유틸리티가 있으며 완료하는 데 걸리는 시간은 얼마입니까? guppy/heapy과 같으나 CPU 사용량입니다.시간이 지남에 따라 CPU 사용량이 증가합니다

+0

cprofile 명령을 표준 라이브러리에 함께 전체 스크립트를 실행할 수 있습니다 "PID". – geoffspear

답변

2

Edit2가

내가 방금 본 실제 질문은 'How can you profile a Python script?'


물론, 사용 profile.py에로 대답한다.

import profile 

def myfunction(): 
    bla bla bla 

profile.run('myfunction()') 

profilerstips on performance 참조하십시오.

편집 : 위의 예는 하나의 기능에 대한 것입니다. 프로필과 함께 cprofile 명령과 함께 명령 줄에서 스크립트를 실행할 수 있습니다 :

def myfunction(): 
    for i in range(100): 
     print(i) 

def myotherfunction(): 
    for i in range(200): 
     print(i) 

def main(): 
    """ main program to run over several days """ 
    for _ in range(3): 
     myfunction() 

    myotherfunction() 

if __name__ == '__main__': 
    profile.run('main()') # will execute your program 
          # and show profiling results afterwards 
+0

하지만 며칠 동안 내 전체 응용 프로그램을 통해 이것을 실행하고 싶습니다. 어쨌든 +1하십시오. – rook

+1

할 수는 있지만 오버 헤드로 인해 프로그램 속도가 더 느려질 수 있습니다. 당신은 잠시 동안 그것을 실행할 수 없으며, 병목 현상이있는 곳을 확인하고 그것에 대한 작업을 할 수 있습니까? – Remi

0

가의 PID를 얻을 :

python -m cProfile myscript.py 

여러분의 프로그램/스크립트가 실행 항상 때 프로파일에 대해 다음과 같이도 볼 수 있었다 프로세스

ps -ef | grep "processname"| awk '{print $ 2}

다음 프로그램에서 더 많은 시간이 걸리는 호출을 확인하십시오.

은 strace를 -c -p

당신도

strace를 -c script.file

관련 문제