首页 > 解决方案 > 为什么 Python 循环变慢?

问题描述

我创建了一个while循环和print每个循环的时间戳。一开始我的表现大约是每秒 33 次循环。然而,花费的时间越长,它就越慢。在 3 分钟时,我的性能是每秒 2 个循环。我尝试threading.Timer改用,但它做同样的事情。我知道计算的内存和复杂性可能是一个问题,但在那种情况下似乎并非如此。

当我想运行代码几个小时时,如何避免性能不足?您的帮助将不胜感激。

import time

while(True):
    print(int(round(time.time() * 1000)))

输出

1556756682157
1556756682216
1556756682240
1556756682269
1556756682296
1556756682324
1556756682358
1556756682387
1556756682415
1556756682441
1556756682470
1556756682501
1556756682556
... // After 3 minutes
1556756860002
1556756860884
1556756861240
1556756861669
1556756862596
1556756863324
1556756863858
1556756864387

标签: pythonpython-3.xperformancewhile-loop

解决方案


根据此处完成的测试,打印可以大大减慢您的循环。删除打印,您的速度不应再下降那么快。请参见下面的示例:

from time import time

start = time()
for i in range(1_000_000):
    print(i)
print(f'run time for printing: {time() - start}')

start = time()
for _ in range(1_000_000):
    pass
print(f'run time for no printing: {time() - start}')

this is what it printed:

# a ton of numbers above this line from printing

run time for printing: 7.047402858734131
run time for no printing: 0.0870048999786377

推荐阅读