2010-08-15 3 views
2

죄송 프로그램의 내부 cprofile 명령을 호출하는 방법을 알아낼 수 없습니다,하지만 난 cprofile 명령을 알아낼 수 없습니다 로 :는 초보자 질문에 대한

python -m cProfile myscript.py 

하지만 웹 서버에서 실행해야합니다, 그래서 나는 그것을 볼 것이다 스크립트 내에서 명령을 넣고 싶습니다. 어떻게하면 좋을까요? 내가 __init__ and __main__ 같은 용어를 사용하여 물건을 봤지만 정말 그 사람들이 이해가 안 돼요.

나는 이것이 단순하다는 것을 알고 있으며, 나는 여전히 모든 것을 배우려고 노력하고 있으며 이것을 알 수있는 사람이 있음을 알고 있습니다.

미리 감사드립니다. 감사합니다.

답변

5

나는이 같은 아이디어를 보게되었습니다 생각 : 당신이 스크립트에 파이썬를 호출 할 때

if __name__ == "__main__": 
    # do something if this script is invoked 
    # as python scriptname. Otherwise, gets ignored. 

은 무엇 발생하면, 직접 호출되는 파일 인 경우 해당 파일이 "__main__"에 속성 __name__ 세트가 있습니다 파이썬 실행 파일. 그렇지 않으면 (직접 호출되지 않은 경우) 가져 오기됩니다. 당신은 예를 들어, 필요한 경우

지금, 당신은 당신이 가정, 스크립트에서이 트릭을 사용할 수 있습니다

def somescriptfunc(): 
    # does something 
    pass 


if __name__ == "__main__": 
    # do something if this script is invoked 
    # as python scriptname. Otherwise, gets ignored. 

    import cProfile 
    cProfile.run('somescriptfunc()') 

이이 스크립트를 변경합니다. 가져올 때, 멤버 함수, 클래스 등을 정상적으로 사용할 수 있습니다. 을 실행하면 명령 줄에서을 실행하면 자체 프로필을 만듭니다.

이게 당신이 찾고 있는게 있니? 나는 아마도, 그래서 여기에 필요한 더 수집 한 의견에서


간다 :

# do some stuff to extract the parameters 
# do something with the parameters 
# return the response. 
:

당신이 CGI 변화에서 스크립트를 실행하는 경우이 양식입니다입니다 나는 추상적 인을 말할 때

, 당신은이 작업을 수행 할 수 있습니다 : 당신의 파이썬 경로에 파일을

def do_something_with_parameters(param1, param2): 
    pass 

if __name__ = "__main__": 
    import cProfile 
    cProfile.run('do_something_with_parameters(param1=\'sometestvalue\')') 

넣어. 자체 실행하면 프로파일 링 할 기능을 프로파일 링합니다.

import {insert name of script from above here} 

# do something to determine parameter values 
# do something with them *via the function*: 
do_something_with_parameters(param1=..., param2=...) 
# return something 

그래서 CGI 스크립트는 당신의 기능에 약간의 래퍼가됩니다 (어쨌든 인)과 기능은 이제 자체 테스트입니다 :

지금, 당신의 CGI 스크립트에 대해 수행하는 스크립트를 만들 .

그러면 프로덕션 서버와 떨어져 바탕 화면에 만들어진 값을 사용하여 기능을 프로파일 링 할 수 있습니다.

아마도이 방법을 사용하면 효과가 있을지 모르지만 작동 할 수 있습니다.

+0

예! 감사. 당신이 비록 somescriptfunc()에서 cProfile look을 보았을 뿐인가? 어떻게 전체 .py 파일을 보게 할 수 있습니까? – Parker

+0

수정하십시오.어떻게할지는 모르겠지만 프로파일 링이 필요한 모든 기능을 수행하는 함수를 사용하거나 프로파일 링이 필요한 각 함수에서'cProfile.run'을 실행하십시오. 스크립트는 통역사가 직접 호출해서는 안됩니다. 그렇게한다면 CGI 형식으로 스크립트를 실행할 때 프로파일 링하게됩니다. –

+0

예, CGI에서 스크립트를 실행하고 있습니다. 어떻게하면 http://example.com/cgi-bin/myscript.py?val=someVal에서 cProfile 출력을 얻을 수 있습니까? – Parker