在Python中使用.pyc文件是否会提高性能?

8
我们可以编写一段Python代码,将其放入已编译的“.pyc”文件中并使用它。我想知道这种做法是否会提高性能,还是仅仅是一种将代码分组的模块化方式。
非常感谢。

请参考以下链接以了解更多信息:为什么运行.pyc文件与.py文件相比并不更快? - metatoaster
请参考以下链接以获取更多阅读材料:为什么.pyc文件的运行速度与.py文件相比并没有更快? - metatoaster
5个回答

10

程序的执行性能不会因为读取‘.pyc’或‘.pyo’文件而提高,它只会使启动时间变得更快。

当从‘.pyc’或‘.pyo’文件中读取程序时,在从‘.py’文件中读取程序时并没有更快的运行速度;唯一更快的是‘.pyc’或‘.pyo’文件被加载的速度。

http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html

而将代码中的文档字符串移除可以是pyo文件成为下一个优化目标。


2
.pyo文件会剥离断言语句(和其他可能的优化),但可能不会删除文档字符串;这取决于您是否使用“-O”或“-OO”。 - Scott Griffiths
好的,谢谢。是的,这也涉及到断言语句,并且它取决于您传递的优化级别。总的来说,它仍然只能带来最小的运行时改进。 - jdi
@ealeon 没有具体的数字概念。当许多py文件不必被解析和编译成字节码时,它可能会为程序的启动时间提供好处。 - jdi
1
没错,但如果没有数字,我怎么能证明创建.pyc文件或关闭它呢:P - ealeon
2
你要自己测试和测量,而不是寻求基准来驱动你的决策 :P - jdi

1

我不确定.py文件是否有用(至少不再创建.py文件可以稍微提高性能),但是Python解释器有一个“-O”标志,可以生成优化的字节码(.pyo文件)。


1

是的,因为第一次执行 .py 文件时,它会被编译成 .pyc 文件。 所以基本上你必须加上编译时间。之后,应该始终使用 .pyc 文件。


0

你将获得Python运行时将源代码解析和编译成字节码所需的几分之一秒,这仅在第一次运行/导入时发生。

你将失去可移植性。

请参见此处

从“.pyc”或“.pyo”文件中读取程序并不比从“.py”文件中读取时运行得更快;唯一更快的是加载“.pyc”或“.pyo”文件的速度。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接