当模块加载时,py文件被“字节编译”为pyc文件。时间戳记记录在pyc文件中。
这样做不会使其运行速度更快,但加载速度更快。
因此,当您加载它们时,“字节编译”模块是有意义的。
[编辑:包括笔记,参考]
From PEP 3147 on “Byte code
compilation”:
CPython将其源代码编译成“字节码”,出于性能考虑,
只要源文件发生更改,它就会将该字节码缓存在文件系统上。
这使得加载Python模块的速度更快,因为编译阶段
可以绕过。当您的源文件是foo.py时,CPython缓存该字节
源代码旁边的一个foo.pyc文件中的代码。
How byte code compiled files are
tracked with respect to Python version
and “py” file changes:
它也在编译的字节码“.pyc”文件中插入一个魔术数字。
当Python更改字节码格式时,通常会在主要版本中更改。
这样可以确保为先前版本的VM构建的pyc文件不会导致问题。
时间戳用于确保pyc文件与之前的py文件相匹配
用来创建它。当魔术数字或时间戳不匹配时,
py文件被重新编译并写入一个新的pyc文件。
“pyc”文件在Python主要版本中不兼容。当Python找到一个pyc
文件与不匹配的魔术数字,它回落到较慢的过程
重新编译源码。
这就是说,如果你简单地分配为同一个平台编译的“.pyc”文件将不再工作,如果python版