2013-05-27 1 views
9

.py 파일과 .pyc 파일의 차이점을 알고 있습니다. 그것이 .pyc 파일에서 읽거나 파일을 .pyo로 될 때를 빨리 하나를 실행하지 않습니다.pyc 파일의 '실행 중'이 .py 파일보다 빠르지 않은 이유는 무엇입니까?

: 내 질문에 대한 , 하지만에 대한 이유docs에 따라 방법 하지입니다 .py 파일에서 읽을 때보 다; .pyc 또는 .pyo 파일에 대해 의 속도가 빠른 것은 이로드되는 속도입니다.

.pyc 파일 가져 오기 속도가 빠릅니다. 그러나 .pyc 파일의 'running'부분을로드 한 후에 .py 파일의 'running'부분과 같은 시간이 걸립니다. 왜 이게지? 나는 (.pyc 파일)이

  • 비트 코드는 파이썬 가상 머신에 가까운 때문에 빠른
  • 평 파일들이 실행되는 전에 .pyc 파일을 컴파일되고 실행 예상합니다. 이것은 추가 단계를 필요로하므로 시간이 오래 걸립니다.

내 질문 : .pyc 파일의 실행 부분이 .py 파일과 비교하여 실행 속도가 향상되지 않는 이유는 무엇입니까?

답변

16

.py 파일을 실행하면 먼저 바이트 코드로 컴파일 된 다음 실행됩니다. 이러한 파일의로드는 느린데, 이는 .pyc의 경우 이미 컴파일 단계가 수행되었지만로드 후에는 동일한 바이트 코드 해석이 수행되기 때문입니다.

code = load(path) 
if path.endswith(".py"): 
    code = compile(code) 
run(code) 
+0

바보, 물론. 감사. – OrangeTux

+0

는 프로그래밍 평 파일을 컴파일하려면 다음 수입 py_compile.compile ('Hello.py') py_compile -이 Hello_cpython - 36.pyc를 생성 (사용중인 구현을 기반으로) – maris

10

방법은 프로그램이이 항상 동일 실행 :

은 의사에서, 파이썬 인터프리터는 다음과 같은 알고리즘을 실행합니다. 컴파일 된 코드가 해석됩니다.

이 프로그램은 로드 된 방법은입니다. 현재 pyc 파일이 있으면 컴파일 된 버전으로 간주되므로 명령을 실행하기 전에 컴파일 단계를 수행해야합니다. 그렇지 않으면 py 파일을 읽고 컴파일러에서 컴파일해야하지만 (약간의 시간이 필요함) 컴파일 된 버전은 다른 방식과 마찬가지로 해석됩니다.

관련 문제