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を初期化する必要があった場所でわずかに遅かった最初の間隔を除外した場合)。