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]
然后运行 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
在标准误差范围内给出几乎相同的时间(特别是如果我排除了它必须首先初始化 a、b、c、d、e、f、g 的稍慢的第一个间隔)。