Python循环中每千次迭代的总耗时与分段耗时测量需求
Python循环分段计时实现方案
Got it,这个需求很常见,咱们可以通过记录两个时间基准来轻松实现——一个用于计算总耗时,另一个专门追踪最近1000次迭代的耗时。下面是调整后的完整代码,我会把关键逻辑拆解清楚:
import time iterations = 10000 # 替换成你的实际总迭代次数 start_total = time.time() start_last_1000 = start_total # 初始化最近千次迭代的起始时间 for i in range(iterations): # ---------------------- # 这里放你的循环业务逻辑 # ---------------------- # 每完成1000次迭代就计算并输出耗时 if (i + 1) % 1000 == 0: # 总耗时:从循环启动到当前的时间差 delta = time.time() - start_total # 最近1000次迭代的耗时:从上一个千次节点到当前的时间差 d2 = time.time() - start_last_1000 # 这里可以根据需求打印或存储时间数据 print(f"已完成第{i+1}次迭代") print(f"累计总耗时: {delta:.4f} 秒") print(f"最近1000次耗时: {d2:.4f} 秒\n") # 更新最近千次的起始时间,为下一轮计数做准备 start_last_1000 = time.time()
关键细节说明
- 触发时机:用
(i + 1) % 1000 == 0判断,是因为迭代从0开始,这样第1000、2000...次迭代完成时刚好触发,逻辑更符合直觉(比如第1000次迭代结束后才统计这1000次的耗时)。 - 时间精度优化:如果你的循环逻辑执行速度极快,推荐用
time.perf_counter()替代time.time()——它是专门为性能测量设计的,精度更高,不受系统时间调整的影响。 - 收尾处理:如果总迭代次数不是1000的整数倍,你可以在循环结束后单独计算最后一批不足1000次的耗时,比如:
# 循环结束后补充统计最后一批迭代 if iterations % 1000 != 0: final_delta = time.time() - start_total final_d2 = time.time() - start_last_1000 print(f"完成全部{iterations}次迭代") print(f"最终总耗时: {final_delta:.4f} 秒") print(f"最后{iterations % 1000}次耗时: {final_d2:.4f} 秒")
内容的提问来源于stack exchange,提问作者Bambi Bunny




