为什么要编译Python脚本?您可以直接从.py文件运行它们,它工作得很好,那么是否有性能优势或其他什么?

我还注意到我的应用程序中的一些文件被编译成.pyc,而其他文件则没有,这是为什么?


当前回答

它被编译成字节码,使用起来非常非常快。

有些文件没有被编译的原因是,每次运行脚本时,你用python main.py调用的主脚本都会被重新编译。所有导入的脚本都将被编译并存储在磁盘上。

Ben Blank补充的重要内容:

值得注意的是,在运行 编译脚本启动速度更快 时间(因为它不需要时间 编译后),它不运行任何文件 得更快。

其他回答

在运行编译脚本时,肯定会有性能差异。如果运行普通的.py脚本,每次运行时机器都会编译它,这需要时间。在现代机器上,这几乎不明显,但随着脚本的增长,这可能会成为一个更大的问题。

运行编译过的python时性能有所提高。然而,当你将.py文件作为导入模块运行时,python将编译并存储它,只要.py文件没有改变,它将始终使用编译后的版本。

对于任何语言,当文件被使用时,过程看起来像这样: 1. 文件由interpeter处理。 2. 文件已编译 3.执行已编译的代码。

显然,通过使用预编译代码,你可以省去第2步,这适用于python, PHP和其他。

这里有一篇有趣的博客文章解释了它们的区别http://julipedia.blogspot.com/2004/07/compiled-vs-interpreted-languages.html 这里有一个解释Python编译过程的条目http://effbot.org/zone/python-compile.htm

是的,性能是主要原因,据我所知,也是唯一的原因。

如果您的一些文件没有被编译,可能是因为目录权限或其他原因,Python无法写入.pyc文件。或者可能未编译的文件从来没有被加载……(脚本/模块只有在第一次加载时才会被编译)

它被编译成字节码,使用起来非常非常快。

有些文件没有被编译的原因是,每次运行脚本时,你用python main.py调用的主脚本都会被重新编译。所有导入的脚本都将被编译并存储在磁盘上。

Ben Blank补充的重要内容:

值得注意的是,在运行 编译脚本启动速度更快 时间(因为它不需要时间 编译后),它不运行任何文件 得更快。

如前所述,将python代码编译为字节码可以提高性能。这通常由python本身处理,仅用于导入脚本。

编译python代码的另一个原因可能是为了保护你的知识产权不被复制和/或修改。

你可以在Python文档中阅读更多相关内容。