【发布时间】:2020-05-06 01:11:22
【问题描述】:
我觉得我对此非常愚蠢。我知道我可以使用python -m compileall 将.py 文件编译为.pyc,其逻辑是脚本加载速度更快,因为它是预编译的,但如果它是主脚本,这似乎不是一个可用的功能。为了解释我的意思,假设我从命令行运行 test.py,如下所示:
python test.py
现在假设 test.py 是一个大文件,需要一些时间来转换为字节码,逻辑上要做的事情是预编译它,所以我在命令中运行以下命令:
python -m compileall test.py
然后我再次使用以下命令运行脚本:
python test.py
如果我理解正确,test.py 文件被重新编译,基本上使预编译毫无意义。我弄错了吗?如果我不是,有没有办法解决这个问题?
【问题讨论】:
-
我相信这个帖子可能会回答你的问题:stackoverflow.com/questions/471191/why-compile-python-code
-
@RubenBrekelmans 我读过那个帖子。它触及了这个问题,但不清楚(至少对我来说不是)。
-
冒着重复另一个线程的风险,但我理解的方式是,在您运行单个文件而没有额外导入的情况下,编译不会有任何区别。如果您在 test.py 中导入模块,那么编译会影响这些导入,但不会影响 test.py 本身。为什么要重新编译test.py,恐怕我不知道。
标签: python python-3.x compilation