将解释的脚本转换为可执行文件会提高速度吗?
Does converting an interpreted script to an executable increase speed?
总的来说,我很好奇,使用将非 exe 文件转换为 exe 文件的实用程序会提高速度吗?据我了解,他们只是将解释器打包在 exe 中。
具体来说,如果您有一个 python 脚本并在其上使用 py2exe,生成的可执行文件 运行 是否比 .py 更快?我的老板似乎有这样的假设,但我不太确定。
尤其是在处理多个模块时。例如,假设您有模块 first.py
和 second.py
。您将它们全部编译为可执行文件。当它们是 .py 时,它们 second.py
可以被称为
from second import main
main()
既然它们是可执行文件,您必须启动一个新进程,这肯定更慢?
subproccess.call(["second.exe"], shell=True)
我理解正确吗?或者 import
从另一个 python 模块实际上启动了一个新的 python 解释器或什么的实例?
在我们的例子中,目标平台始终是 Windows。
你的老板被误导了。 py2exe 所做的只是将您的程序打包成一个能够 运行 无需依赖项的自包含程序包。它仍然是相同的字节码 运行ning 在同一个解释器上(好吧,无论打包什么)。
请参阅 this other answer 了解所有 "optimization" 您可以不用 -o 标志的情况。
此外,是的,绝对 运行 一些基准可以自己确认。
总的来说,我很好奇,使用将非 exe 文件转换为 exe 文件的实用程序会提高速度吗?据我了解,他们只是将解释器打包在 exe 中。
具体来说,如果您有一个 python 脚本并在其上使用 py2exe,生成的可执行文件 运行 是否比 .py 更快?我的老板似乎有这样的假设,但我不太确定。
尤其是在处理多个模块时。例如,假设您有模块 first.py
和 second.py
。您将它们全部编译为可执行文件。当它们是 .py 时,它们 second.py
可以被称为
from second import main
main()
既然它们是可执行文件,您必须启动一个新进程,这肯定更慢?
subproccess.call(["second.exe"], shell=True)
我理解正确吗?或者 import
从另一个 python 模块实际上启动了一个新的 python 解释器或什么的实例?
在我们的例子中,目标平台始终是 Windows。
你的老板被误导了。 py2exe 所做的只是将您的程序打包成一个能够 运行 无需依赖项的自包含程序包。它仍然是相同的字节码 运行ning 在同一个解释器上(好吧,无论打包什么)。
请参阅 this other answer 了解所有 "optimization" 您可以不用 -o 标志的情况。
此外,是的,绝对 运行 一些基准可以自己确认。