我有这个简单的python
代码:
import numpy as np
a = np.array([1,2,3,4,5,6])
print a
如果我在sublime text
上一遍又一遍地使用(cmd+B)
运行它,它会每次打印结果[1 2 3 4 5 6]
,如此(以秒为单位):
1st run: [Finished in 7.7s]
2nd run: [Finished in 1.6s]
3rd run: [Finished in 0.5s]
然后它稳定在0.5s
,这对于这样一个简单的程序来说非常慢。
所以我试着计时,得到了以下结果:
[1 2 3 4 5 6]
0.00280284881592
[Finished in 7.4s]
[1 2 3 4 5 6]
0.00325489044189
[Finished in 2.0s]
[1 2 3 4 5 6]
0.000813961029053
[Finished in 0.1s]
进一步测试,我计算了绕过包导入的代码:
a = [1,2,3,4,5,6];
print(a)
得到了:
[1, 2, 3, 4, 5, 6]
0.000219106674194
[Finished in 1.4s]
最后,使用numpy
:
import numpy as np
a = np.array([1,2,3,4,5,6])
a=1
我得到了:
1.2614569664
[Finished in 2.5s]
计算机内存发生了什么,所以程序的行为是这样的?
答案 0 :(得分:2)
我认为您的帖子中有3个主要问题:
原因是操作系统会将经常使用的文件从磁盘缓存到RAM。 RAM访问比磁盘访问快得多。这称为disk cache or page cache。多次运行python后,内存为 warm ,OS可以从快速RAM加载相关文件。更确切地说,它每次都不会更快。相反,经过两三次,它达到最快。
&#39>完成后的时间'由崇高文本给出包括2部分:一部分是用于启动python
本身的时间,另一部分是时间运行脚本。
在您的情况下,大多数时间包括从python
开始的时间和导入numpy包的时间。在我的机器中有一些情况。所有的时间都是稳定的"时间。
案例1:
import numpy as np
print(0)
[以0.7秒完成]
案例2:
print(0)
[以0.2秒完成]
案例3:
import datetime
print(0)
[以0.2秒完成]
如上所示,启动python的成本为0.2s,导入numpy成本为0.5s。我认为numpy非常庞大,导入速度很慢。
因为磁盘缓存将根据最新访问动态调整。 10分钟后,计算机中的其他程序将占用内存。记忆冷却。