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

Python中如何实现if语句仅在上次执行后过x秒才再次执行

实现if语句仅在上次执行完毕后间隔超过x秒才再次执行

这问题我之前做定时任务的时候也踩过坑,核心其实就是跟踪上次执行完成的时间戳,每次判断前先算时间差,满足间隔要求再走后续的业务逻辑。下面给你拆解思路和不同语言的示例:

通用逻辑步骤

  • 初始化一个变量,用来存储上次执行完毕的时间戳(不是开始执行的时间哦,这点很重要)
  • 每次要触发判断时,先获取当前时间
  • 计算当前时间和上次执行完成时间的差值,如果大于设定的x秒,再检查你的业务if条件
  • 要是业务条件满足,执行逻辑后,把上次执行时间更新为当前(执行完毕的)时间

代码示例

Python 版本

import time

# 设定间隔时间,单位:秒
interval_seconds = 5
# 初始值设为0,确保第一次判断时时间差肯定大于interval_seconds
last_finish_time = 0

while True:
    current_time = time.time()
    # 先检查时间间隔是否达标
    if current_time - last_finish_time > interval_seconds:
        # 这里替换成你的业务判断条件
        if some_your_business_condition:
            print("开始执行if语句逻辑...")
            # 模拟你的业务逻辑(比如耗时操作)
            time.sleep(2)
            # 重点:记录执行完毕的时间,而不是开始时间
            last_finish_time = time.time()
    # 加个短休眠,避免循环占用过多CPU
    time.sleep(0.1)

JavaScript 版本(浏览器/Node.js通用)

// 设定间隔时间,单位:毫秒(1秒=1000毫秒)
const intervalMs = 5000;
let lastFinishTime = 0;

function checkAndRun() {
    const currentTime = Date.now();
    if (currentTime - lastFinishTime > intervalMs) {
        // 替换成你的业务判断条件
        if (yourBusinessCondition) {
            console.log("执行if语句逻辑...");
            // 模拟耗时业务逻辑
            setTimeout(() => {
                // 执行完毕后更新时间戳
                lastFinishTime = Date.now();
            }, 2000);
        }
    }
}

// 定期检查,比如每100毫秒触发一次
setInterval(checkAndRun, 100);

注意事项

  • 如果是多线程/多进程环境,要注意last_finish_time变量的线程安全(比如Python用threading.Lock保护读写,Java用原子类),避免多个线程同时修改导致时间记录错误。
  • 如果你希望第一次启动就允许执行,初始值可以设为当前时间 - 间隔时间 - 1,这样第一次判断时时间差肯定满足要求。
  • 一定要记录执行完毕的时间,而不是开始执行的时间,不然如果你的业务逻辑本身耗时较长,实际间隔会比你设定的x秒短很多。

内容的提问来源于stack exchange,提问作者Joakim Hansen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:39:22