gpt4 book ai didi

python - 在生产中禁用 pyc 文件

转载 作者:行者123 更新时间:2023-11-28 22:36:11 31 4
gpt4 key购买 nike

pyc 文件在过去一直是痛苦的原因,我最近看到一些关于防止 python 生成它们的帖子。目前,我们只是在任何代码更改后运行一个脚本来清理它们,以确保生成新的代码,但通常禁用它们会容易得多。在我们的生产环境中禁用它们是否有任何我可能不知道的副作用?这样做有什么缺点?

我们遇到的唯一真正问题是文件偶尔会过时,导致导入错误,并且在大规模重构后难以调试。一旦意识到这是一个 pyc 问题,它就很容易修复,只需运行脚本,但在调试过程中可能需要 30 分钟才能实现。

最佳答案

禁用编译字节码的编写和使用会在启动时带来性能成本——您的 Python 代码在进程生成时加载到内存中,非 .pyc/.pyo 文件意味着解释器被迫解析每个导入启动时的文件。如果您当前正在从代码目录和导入中删除所有 .pyc 和 .pyo 文件,那么您已经在强制执行此版本。

我很好奇他们过去在什么地方造成了麻烦(您是否在文件系统上禁用修改时间?)好像 .py 文件比 文件更新。 pyc 文件,Python 解释器(至少在常见的实现中,包括 CPython)将重新编译源代码,但这对于这个问题的范围来说并不是很重要。

如果您在函数后面导入,例如:

def my_database_call(budget_id):
import some_expensive_module_to_import
some_orm(...).get(budget_id)

在调用该函数之前不会产生导入成本(并且可能在以后每次调用时也是如此)。这与您允许字节码(.pyc 或“优化的”.pyo 文件)没有明显不同,但至少在那种情况下,您要付费该导入/解析/编译价格仅一次。

如果您在评论中提到,如果您“掏空”操作系统来调用 Python 脚本,并且不允许在该调用中写入字节码,则每次调用都会产生编译费用。

关于python - 在生产中禁用 pyc 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37669883/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com