与.py文件相比,为什么.pyc文件的“运行”速度不快?

时间:2013-05-27 12:35:31

标签: python pyc

我知道.py和.pyc文件之间的区别。我的问题是关于如何关于为什么根据docs

  

从.pyc或.pyo读取程序时,程序运行速度不会更快   文件,而不是从.py文件中读取的文件;这是唯一的事情   更快的.pyc或.pyo文件是它们的速度   加载。

.pyc文件加载导入速度更快。但加载.pyc文件的'running'部分后,与.py文件中的'running'部分相同?这是为什么?我希望

  • 位代码(.pyc)更接近Python虚拟机,因此运行得更快
  • .py文件在执行之前正在编译为.pyc。这需要额外的一步,因此需要花费时间。

我的问题:在导入部分之后,为什么.py文件的运行部分与.py文件相比不会加快执行速度?

2 个答案:

答案 0 :(得分:17)

运行.py文件时,首先将其编译为字节码,然后执行。加载这样的文件比较慢,因为对于.pyc,编译步骤已经执行,但加载后,完成了相同的字节码解释。

在伪代码中,Python解释器执行以下算法:

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

答案 1 :(得分:10)

程序运行的方式始终相同。编译的代码被解释。

程序加载的方式不同。如果存在当前pyc文件,则将其作为编译版本,因此在运行命令之前不必执行编译步骤。否则,将读取py文件,编译器必须编译它(这需要一点时间),但是内存中的编译版本就像其他方式一样被解释。