smi*_*lli 5 python deployment pyc
在开发 Python Web 应用程序 (Flask/uWSGI) 并在我的本地机器上运行它时,*.pyc文件由解释器生成。我的理解是,这些编译后的文件可以使加载速度更快,但不一定运行得更快。
当我将这个相同的应用程序部署到生产环境时,它在一个对本地文件系统没有写权限的用户帐户下运行。没有*.pyc提交给源代码控制的文件,并且在部署期间无需努力生成它们。即使 Python 想.pyc在运行时写入文件,它也无法做到。
最近我开始怀疑这是否对应用程序的性能有任何切实的影响,无论是在流程开始后的第一次浏览量方面,还是在整个生命周期中始终如一。
我应该将 apython -m compileall作为部署脚本的一部分吗?
当然,您可以继续预编译为.pyc's,因为它不会有任何伤害。
它会影响第一个或第 n 个页面加载吗?假设 Flask/WSGI 作为一个持久进程运行,完全不是。当第一页被请求时,所有的 Python 模块都已经被加载到内存中(作为字节码)。因此,服务器启动时间将是唯一因未预编译文件而受到影响的事情。
但是,如果出于某种原因为每个页面请求调用一个新的 Python 进程,那么是的,性能上(可能)会有明显的差异,最好进行预编译。
正如克劳斯在上面的评论中所说的那样,页面加载可能会受到影响的唯一其他时间是函数碰巧尝试导入尚未导入的模块。这将需要模块被解析并转换为字节码,然后在能够继续之前加载到内存中。
| 归档时间: |
|
| 查看次数: |
2673 次 |
| 最近记录: |