部署时是否应该生成 *.pyc 文件?

2024-02-17

开发 Python Web 应用程序 (Flask/uWSGI) 并在本地计算机上运行它时,*.pyc文件由解释器生成。我的理解是这些编译后的文件可以使东西load更快,但不一定run faster.

当我将同一个应用程序部署到生产环境时,它在本地文件系统上没有写入权限的用户帐户下运行。没有*.pyc文件提交到源代码管理,并且在部署期间不努力生成它们。即使Python想写一个.pyc文件在运行时,它就不能。

最近,我开始想知道这是否会对应用程序的性能产生任何实际影响,无论是在流程开始后的第一个页面浏览量方面,还是在其整个生命周期中始终如一。

我应该扔一个python -m compileall作为我的部署脚本的一部分?


当然,您可以继续预编译.pyc因为它不会伤害任何东西。

会影响第一个或第n个页面加载吗?假设 Flask/WSGI 作为持久进程运行,则根本不是。当请求第一页时,所有 Python 模块都已加载到内存中(作为字节码)。因此,服务器启动时间将是没有预编译文件的唯一影响。

但是,如果由于某种原因为每个页面请求调用一个新的 Python 进程,那么是的,性能(可能)会有明显的差异,并且最好进行预编译。

正如克劳斯在上面的评论中所说,页面加载可能受到影响的唯一其他时间是如果一个函数碰巧尝试导入尚未导入的模块。这将要求模块被解析并转换为字节码,然后加载到内存中才能继续。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

部署时是否应该生成 *.pyc 文件? 的相关文章

随机推荐