请,我需要帮助:)我在python中的循环时间更长,我想每1000次迭代测量一次总时间,也要测量最近1000次迭代之间的时间(我的意思是周期中1000次与2000次迭代之间的差)。
变量,用于测量从我开始调用到开始的总时间以及在调用delta1000次迭代之间的时间d2
start = time.time()
for i in range (0, iterations):
# ... logic in cycle ...
# calculating delta in each iteration
delta = time.time() - start
# Measuring time after every 1000 iterations
if (i + 1) % 1000 == 0:
# Calculating d2 time
d2 = time.time() - start - d2
print (str(i + 1) + ' items in ' + time.strftime("%H:%M:%S", time.gmtime(delta)) + ' (' + time.strftime("%H:%M:%S", time.gmtime(d2)) + ')' )
# After cycle
end = time.time() - start
print ('Total time: ' + time.strftime("%H:%M:%S", time.gmtime(end)))
结果如下:
1000 items in 00:00:07 (00:00:07)
2000 items in 00:00:13 (00:00:06)
3000 items in 00:00:20 (00:00:13)
4000 items in 00:00:27 (00:00:13)
5000 items in 00:00:34 (00:00:20)
6000 items in 00:00:41 (00:00:20)
7000 items in 00:00:48 (00:00:27)
8000 items in 00:00:55 (00:00:27)
9000 items in 00:01:01 (00:00:34)
10000 items in 00:01:08 (00:00:34)
11000 items in 00:01:15 (00:00:41)
12000 items in 00:01:22 (00:00:41)
似乎在第一个值中是可以的(在第二行中,在7秒和13秒之间的增量是可以的),但是此后的时间却使人感到迷惑。看最后两行。00:01:08和00:01:15之间的增量大约是7秒(就像前两行一样),而不是41秒。也是最后一行...
我在哪里有问题?有什么想法吗?
如有任何提示或帮助,我将非常高兴。非常感谢你
问候
解决方案
您还必须在每个第1000个循环中更新d2。old_delta为了清楚起见,我已将旧三角洲命名。
import time
iterations = 5000
start = time.time()
old_delta = 0
for i in range(0, iterations):
time.sleep(.002)
# ... logic in cycle ...
# calculating delta in each iteration
delta = time.time() - start
# Measuring time after every 1000 iterations
if (i + 1) % 1000 == 0:
# Calculating d2 time
d2 = delta - old_delta
print(str(i + 1) + ' items in ' + time.strftime("%H:%M:%S",
time.gmtime(delta)) + ' (' + time.strftime("%H:%M:%S", time.gmtime(d2))
+ ')' )
old_delta = delta
# After cycle
end = time.time() - start
print ('Total time: ' + time.strftime("%H:%M:%S", time.gmtime(end)))