Python:如何避免time.time()计时结果重复打印
问题:单次计时结果重复输出的解决方法
当前代码在检测到1个圆时会重复打印计时结果,需求是仅输出最终的一次计时结果(从检测到5个圆开始,到检测到1个圆结束的时长)。
原代码
if (len(circles[0, :])) == 5: start = time.time() if (len(circles[0, :])) == 1: end = time.time() t = timedelta(seconds=end-start) print(t)
当前输出
0:00:01.615148 0:00:01.633098 0:00:01.673181 0:00:01.698559 0:00:01.754114 0:00:01.769037 0:00:01.816332 0:00:01.833286 0:00:01.864809 0:00:01.900769 0:00:01.932686 0:00:01.966634 0:00:01.998760 0:00:02.032730 0:00:02.088114 0:00:02.108045
需求输出
0:00:02.108045
解决方案
核心问题是代码每次检测到1个圆就执行打印,没有判断是否为首次完成计时。通过添加状态变量控制仅打印一次即可解决:
修改后的代码
# 初始化状态变量,标记计时是否已完成 timing_completed = False if (len(circles[0, :])) == 5: start = time.time() # 检测到5个圆时重置状态,允许重新计时 timing_completed = False if (len(circles[0, :])) == 1 and not timing_completed: end = time.time() t = timedelta(seconds=end-start) print(t) # 标记计时完成,避免重复打印 timing_completed = True
逻辑说明
timing_completed变量默认False,表示未完成计时;- 检测到5个圆时,除启动计时器外,重置
timing_completed为False,确保后续若再次检测到5个圆能重新触发计时; - 仅当检测到1个圆且
timing_completed为False时,才计算并打印时长,随后将变量设为True,阻止后续重复输出。
如果你的场景只需要一次完整计时(从第一次5个圆到第一次1个圆),也可以在打印后直接调用exit()退出程序,但状态变量的方式更适配循环检测的场景。
内容的提问来源于stack exchange,提问作者Ethan0619
相关产品推荐
相关产品推荐

