Python - 运行程序的速度越来越快

时间:2016-12-17 02:40:10

标签: python numpy memory

我有这个简单的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]

计算机内存发生了什么,所以程序的行为是这样的?

1 个答案:

答案 0 :(得分:2)

我认为您的帖子中有3个主要问题:

  1. 为什么每次都跑得更快?
  2. 为什么它稳定在0.5s?对于这么简单的程序来说这很慢。
  3. 10分钟后连续三次重复操作,再次发生。为什么?
  4. 为什么每次运行得更快?

    原因是操作系统会将经常使用的文件从磁盘缓存到RAM。 RAM访问比磁盘访问快得多。这称为disk cache or page cache。多次运行python后,内存为 warm ,OS可以从快速RAM加载相关文件。更确切地说,它每次都不会更快。相反,经过两三次,它达到最快。

    为什么它稳定在0.5s?

    &#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分钟后连续三次重复操作,再次发生。为什么?

    因为磁盘缓存将根据最新访问动态调整。 10分钟后,计算机中的其他程序将占用内存。记忆冷却