为什么要编译Python脚本?您可以直接从.py文件运行它们,它工作得很好,那么是否有性能优势或其他什么?
我还注意到我的应用程序中的一些文件被编译成.pyc,而其他文件则没有,这是为什么?
为什么要编译Python脚本?您可以直接从.py文件运行它们,它工作得很好,那么是否有性能优势或其他什么?
我还注意到我的应用程序中的一些文件被编译成.pyc,而其他文件则没有,这是为什么?
当前回答
没有涉及到的是源到源的编译。例如,nuitka将Python代码转换为C/ c++,并将其编译为直接在CPU上运行的二进制代码,而不是在较慢的虚拟机上运行的Python字节码。
这可以显著提高速度,或者当您的环境依赖于C/ c++代码时,它可以让您使用Python。
其他回答
在运行编译脚本时,肯定会有性能差异。如果运行普通的.py脚本,每次运行时机器都会编译它,这需要时间。在现代机器上,这几乎不明显,但随着脚本的增长,这可能会成为一个更大的问题。
它被编译成字节码,使用起来非常非常快。
有些文件没有被编译的原因是,每次运行脚本时,你用python main.py调用的主脚本都会被重新编译。所有导入的脚本都将被编译并存储在磁盘上。
Ben Blank补充的重要内容:
值得注意的是,在运行 编译脚本启动速度更快 时间(因为它不需要时间 编译后),它不运行任何文件 得更快。
没有涉及到的是源到源的编译。例如,nuitka将Python代码转换为C/ c++,并将其编译为直接在CPU上运行的二进制代码,而不是在较慢的虚拟机上运行的Python字节码。
这可以显著提高速度,或者当您的环境依赖于C/ c++代码时,它可以让您使用Python。
如前所述,将python代码编译为字节码可以提高性能。这通常由python本身处理,仅用于导入脚本。
编译python代码的另一个原因可能是为了保护你的知识产权不被复制和/或修改。
你可以在Python文档中阅读更多相关内容。
初学者认为Python是通过.pyc文件编译的。.pyc文件是编译后的字节码,然后对其进行解释。因此,如果您之前运行过Python代码,并且手边有.pyc文件,那么第二次运行时它会运行得更快,因为它不必重新编译字节码
编译器: 编译器是将高级语言转换为机器语言的一段代码
翻译: 解释器还将高级语言转换为机器可读的对等二进制。每次解释器获得要执行的高级语言代码时,它在将代码转换为机器代码之前将其转换为中间代码。代码的每一部分都被解释,然后按顺序分别执行,如果在代码的某一部分中发现错误,它将停止对代码的解释,而不翻译下一组代码。
来源: http://www.toptal.com/python/why-are-there-so-many-pythons http://www.engineersgarage.com/contribution/difference-between-compiler-and-interpreter