t3h*_*70r 5 python python-2.7 python-3.x
我正在编写一些python代码来处理大量数据(近600万条!)。在代码中,我使用了一个巨大的for循环来处理每个集合。在该循环中,我在每个循环中使用相同的变量并将其覆盖。当我运行该程序时,我注意到它运行的时间越长,速度就越慢。此外,在进一步的实验中,我发现如果为10,000-10,100的值运行它的速度与从0到100的速度相同。因此,我得出结论,由于我并没有创建更多的变量,而是仅处理现有的变量,所以每次重写变量,必须将其保存在python的某个位置。
所以:我说的对吗?一定是python将我的改写保存到某个地方吗?还是我错了?还有其他事情吗?
Python 在保存被覆盖的变量之前不会复制变量的原始值。
您可能会看到各种缓存对程序速度减慢的影响。或者,如果您正在创建对象,则会调用垃圾收集器来删除您创建的不再引用的对象。
您是否有示例代码来显示您所看到的这种行为?
例如:
import hashlib
import random
import time
def test():
t = []
for i in xrange(20000):
if (i == 0) | (i==100)|(i==10000)|(i==10100):
t.append(time.time())
for j in range(1,10):
a = hashlib.sha512(str(random.random()))
b = hashlib.sha512(str(random.random()))
c = hashlib.sha512(str(random.random()))
d = hashlib.sha512(str(random.random()))
e = hashlib.sha512(str(random.random()))
f = hashlib.sha512(str(random.random()))
g = hashlib.sha512(str(random.random()))
print t[1]-t[0], t[3]-t[2]
Run Code Online (Sandbox Code Playgroud)
然后运行10次:
>>> for i in range(10):
test()
0.0153768062592 0.0147190093994
0.0148379802704 0.0147860050201
0.0145788192749 0.0147390365601
0.0147459506989 0.0146520137787
0.0147008895874 0.0147621631622
0.0145609378815 0.0146908760071
0.0144789218903 0.014506816864
0.0146539211273 0.0145659446716
0.0145878791809 0.0146989822388
0.0146920681 0.0147240161896
Run Code Online (Sandbox Code Playgroud)
给出与标准误差内几乎相同的时间(特别是如果我排除第一个间隔,在该间隔中它必须首先初始化 a、b、c、d、e、f、g)。
| 归档时间: |
|
| 查看次数: |
674 次 |
| 最近记录: |