我真的不擅长编译程序,我只想知道如果我使用 py2exe 将其转换为 .exe,我的 python 2.5 程序是否会更快。如果它最终会变慢,我不想花很多时间尝试编译它。我的程序使用 OpenCV 和 PyAudio,但我认为这是它使用的唯一非纯 python 模块。谢谢!
注意:我认为这个问题不需要代码片段,但如果需要,请在评论中说明。谢谢!
我真的不擅长编译程序,我只想知道如果我使用 py2exe 将其转换为 .exe,我的 python 2.5 程序是否会更快。如果它最终会变慢,我不想花很多时间尝试编译它。我的程序使用 OpenCV 和 PyAudio,但我认为这是它使用的唯一非纯 python 模块。谢谢!
注意:我认为这个问题不需要代码片段,但如果需要,请在评论中说明。谢谢!
不,不是。由于它只是一个包装器,它提供了运行代码所需的必要文件。使用 Cython 可以使您的程序运行得更快,因为它能够使用 C 编译它。
如果你想让你的程序更快,你首先要衡量它为什么慢。这意味着找出程序将时间花在哪里。为此使用可用的分析器之一。从链接的示例中可以看出,这并不难。
如果您知道程序将大部分时间花在哪里,您可以决定优化是否值得甚至可能。例如,如果您的程序已经使您的网络连接饱和,那么修补程序不会使其更快。
如果您将程序中最慢的代码添加到您的问题中,也许我们可以帮助您改进它。通常可以通过改进您使用的算法来获得巨大的收益。例如,如果您的代码对一长串数据进行相同的计算,通常很容易使用multiprocessing.Pool使其更快。如果你有一个 N 核 CPU,Pool.map()
它可以比普通的map()
.
如果这还不够,可以在pypy实现上运行很多标准的 Python 代码,这通常比 cpython 实现更快。
除了已经提到的 cython,您还可以使用用 C 编写的现有扩展,例如numpy进行数值计算。当然,另一种选择是用 C 编写一个专门构建的扩展。
您的操作系统也很重要。似乎XP 上的 python 在文件访问上比在 Linux 上慢。
我在 Windows Python 上工作了 2 个月,我必须说我不是很开心。如果你有任何 C 模块(除了标准库),你会遇到很大的问题来让它工作。
速度和Linux差不多,但似乎慢了一点。 请注意,py2exe 不是最好的。我遇到了 py2exe 问题,不得不使用 pyinstaller。它有一个更好的调试,它在 py2exe 没有的情况下工作
我最大的失望是 exe 大小,我有一个使用 lxml、suds 的简单程序,它有 7-8mb 大...