为什么要编译 Python 代码?

新手上路,请多包涵

为什么要编译 Python 脚本?您可以直接从 .py 文件运行它们并且运行良好,那么是否有性能优势或其他什么?

我还注意到我的应用程序中的某些文件被编译为 .pyc 而其他文件则没有,这是为什么?

原文由 ryeguy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 422
2 个回答

它被编译为字节码,可以更快地使用它。

某些文件未编译的原因是每次运行脚本时都会重新编译您使用 python main.py 调用的主脚本。所有导入的脚本将被编译并存储在磁盘上。

Ben Blank 的重要补充:

值得注意的是,虽然运行已编译脚本的 启动 时间更快(因为它不需要编译),但 运行 速度并没有更快。

原文由 Georg Schölly 发布,翻译遵循 CC BY-SA 3.0 许可协议

.pyc 文件是已经编译为字节码的 Python。如果 Python 发现一个与您调用的 .py 文件同名的文件,它会自动运行一个 .pyc 文件。

“Python 简介”关于已编译的 Python 文件是这样 的:

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

运行 .pyc 文件的优点是 Python 不必在运行它之前产生编译它的开销。由于无论如何 Python 都会在运行 .py 文件之前编译为字节码,因此除此之外不应该有任何性能改进。

使用已编译的 .pyc 文件可以得到多少改进?这取决于脚本的作用。对于只打印“Hello World”的非常简短的脚本,编译可能占总启动和运行时间的很大一部分。但是,对于运行时间较长的脚本,编译脚本的成本相对于总运行时间会减少。

您在命令行中命名的脚本永远不会保存到 .pyc 文件中。只有由该“主”脚本加载的模块才会以这种方式保存。

原文由 Bill Karwin 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题