You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让满足条件的Python代码每隔10秒打印时间,而非仅触发一次

代码修改方案

原代码仅能触发一次的核心原因是:判断差值用的是固定的初始start_time,首次满足条件后time.time() - start_time会永久大于10,且没有更新时间基准的逻辑,因此只会触发一次。

修改步骤

  • 在你的循环逻辑外部,新增一个变量记录上一次触发的时间,初始值和start_time保持一致
  • 将触发条件中的时间差判断基准,从固定的start_time改为动态更新的last_trigger_time
  • 每次触发打印操作后,更新last_trigger_time为当前时间,为下一次10秒计数做基准
  • 将原代码中end_time的赋值逻辑移到循环外部,避免每次循环都重置导致break逻辑永远无法生效

修改后代码示例

import time
from time import ctime
import cv2

# 循环外部初始化变量(放到你原有循环的前面)
start_time = time.time()
last_trigger_time = start_time
end_time = time.time() + 5 # 结束时间提前设置,不要放到循环内重复赋值

# 你原有的业务循环,保留原来的循环条件即可
while True:
    # 此处保留你原有获取frame、计算Total_ratio、定义font等逻辑
    Total_ratio = xxx # 你的数值计算逻辑
    frame = xxx # 你的帧获取逻辑

    if (time.time() - last_trigger_time > 10 and Total_ratio > 5.0 ):
        cv2.putText(frame, "Closed", (50, 150), font, 7, (0, 255, 255), thickness=3)
        print(ctime())
        # 触发后更新上一次触发时间,重置10秒计数
        last_trigger_time = time.time()
           
    if time.time() > end_time:
        break

补充说明:如果你的需求是满足Total_ratio>5.0时立刻触发第一次,之后每隔10秒触发,把last_trigger_time的初始值设为start_time - 10即可。

内容的提问来源于stack exchange,提问作者Toby Ran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:27:04