我搜索了一会儿,发现了一些合理的说法,CPython的编译允许更快地执行Python代码。不过,我想知道是否有人知道有任何基准来证明加速程度。
或者,也许我可以轻松地对其进行基准测试。是否有一个Python标志可以在运行时给出以关闭编译?
答案 0 :(得分:3)
cpython运行的所有代码必须先编译为字节码才能运行。这就是解释器的工作原理,你可能无法合理地改变它(没有编写自己的解释器)。
但是,默认情况下,加载的模块的已编译字节码将缓存在.pyc
个文件中。这意味着下次加载时不需要再次编译。字节码缓存可能就是你所听到的,因为它可以加快以前使用的模块的导入数量。虽然加载模块后它不会改变性能。
您可以使用-B
命令行选项或PYTHONDONTWRITEBYTECODE
环境变量禁用字节码缓存。如果要对速度差进行测试,可能还需要删除任何现有缓存。在Python 2中,编译后的字节码将写入.pyc
源文件旁边的.py
文件。在Python 3中,这被更改为使用__pycache__
文件夹,该文件夹可以容纳来自不同Python版本的多个.pyc
文件(因此您可以同时拥有多个缓存版本,请参阅PEP 3147了解更多信息详情)。