2011-07-05 3 views
0

내가 파이썬 초보자 및파이썬 cprofile 명령 :

python -m cProfile -o ./temp/PROFILE.log myScript.pyo 

즉, 명령 행을 통해 cprofile 명령을 호출하는 것을 시도하고있다 이영표 파일 것이 가능하지만

그 구문 에러라는 오류 메시지가 발생합니다 : 비를 1 행의 myScript.pyo 파일에 ASCII 문자 '\ xb3'이 있지만 인코딩이 선언되지 않았습니다. 자세한 내용은 http://www.python.org/peps/pep-0263.html을 참조하십시오.

그러나 myScript.py 파일에 대해 동일한 작업을 수행하면 정상적으로 작동합니다.

클라이언트 컴퓨터에서 프로필 데이터를 수집해야하며 해당 컴퓨터에서 소스 코드를 가질 수 없습니다.

누락 된 것이 있습니까?

답변

1

저는 cProfile이 execfile()을 사용한다고 확신합니다. 힌트는 워드 프로세서 (http://docs.python.org/library/profile.html)에서 유래 :

This function takes a single argument that can be passed to the exec statement

execfile() *지며 .pyo 파일을 *의 .pyc 파일 등을 실행할 수 없습니다 - 그것은 같은 예외와 함께 실패합니다.

>>> execfile("myscript.pyc") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "tix_email.pyc", line 1 
SyntaxError: Non-ASCII character '\xd1' in file tix_email.pyc on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 

.pyc 또는 .pyo에 대해 프로필/cProfile을 실행하는 경우는 아마도 해결되지 않았습니다. 왜 그런지에 대한 표준적인 설명을 찾지 못했지만, 메인 스크립트는 일반적으로 cPython 인터프리터가 작동하는 방식 때문에 바이트 컴파일되지 않을 것으로 예상됩니다. 인터프리터는 기본 스크립트를 자동으로 바이트 컴파일하지 않지만 가져온 모듈에 대해서는 그렇게합니다. 주제에 대한 SO 질문은 다음과 같습니다. Why does Python compile modules but not the script being run?

문제를 해결하려면 프로파일 링 할 .pyo에서 일반적으로 main으로 실행했던 스크립트를 호출 할 수 있습니다. 노출 된 코드는 꽤 사소한 것입니다.

launch.py ​​

import foo 
foo.call_my_func() 

다음 실행 : 나는 launch.py ​​파일에 xyz.pyo ​​파일을 가져 오는 시도

python -m cProfile -o ./temp/PROFILE.log launch.py

+0

하지만 파이썬이 날 오류 준다 ' ImportError를 : xyz라는 이름의 모듈이 없습니다 xyz.pyo의 plae에 xyz.py를 넣으면 파이썬이 행복합니다 @ jeremy-brown – Kashif

+0

@Kashif :'xyz.pyo' (그러나'.pyc' 나'.py'가 아닌)를 임포트하려면 Python을 -OO로 실행해야합니다 – xOneca

관련 문제