我支持python2和python3上的项目,并注意到python3解释器加载的时间几乎是python2解释器的3倍。
(在Arch Linux上运行)
$ cat hello.py
print('Hello World!')
$ python -V
Python 3.4.2
$ time python hello.py
Hello World!
real 0m1.561s
user 0m1.290s
sys 0m0.110s
$ python2 -V
Python 2.7.9
$ time python2 hello.py
Hello World!
real 0m0.613s
user 0m0.513s
sys 0m0.070s
再一次没有代码:
$ rm foo ; touch foo ; time python foo ; time python2 foo
real 0m1.710s
user 0m1.297s
sys 0m0.103s
real 0m1.040s
user 0m0.667s
sys 0m0.100s
$ echo $PYTHONSTARTUP
$ rm foo ; touch foo ; time python -B foo ; time python2 -B foo
real 0m1.554s
user 0m1.117s
sys 0m0.123s
real 0m0.678s
user 0m0.557s
sys 0m0.090s
这里发生了什么?
答案 0 :(得分:1)
尝试通过将-S
传递给python来禁用“local site libraries”。当我使用速度较慢的ARM盒子时,传递这一点对我来说明显加快了速度。例如,我得到:
time python3 -S -c pass
在约0.076秒内运行,挂钟时间,而香草:
time python3 -c pass
需要0.247秒。将此选项传递给python2会在各种发行版中为我带来类似的加速,所以即使这样也无法解释差异 - 只是解决其中一些问题的方法!
希望你不介意我复活这个帖子;谷歌指出了我,我希望得到一个有用的答案。
答案 1 :(得分:0)
您所看到的启动时间与我在系统上看到的启动时间明显不同:
$ touch py
$ python3 py
$ time python3 py
real 0m0.027s
user 0m0.019s
sys 0m0.006s
$ python3 -V
Python 3.4.2
$ time python py
real 0m0.023s
user 0m0.013s
sys 0m0.008s
$ python -V
Python 2.7.8
我看到python3略有增加,但没有像你看到的那样增加1秒。我可以想到有两个可能导致差异的原因。首先,您可能在解释器加载时执行python启动文件。
$ echo $PYTHONSTARTUP
~/.pythonrc
检查是否为python3加载了启动文件,但是没有为python2加载。
另外,尝试运行测试而不编写字节码:
time python -B foo
这可能是您的设置本地的环境问题,而不是解释器版本之间的主要区别。