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

如何在Python中每分钟整点执行函数且避免时间漂移?

解决每分钟准确定时执行函数且避免资源浪费的问题

你这个思路逻辑上确实能实现需求,但正如你担心的那样,每秒(甚至更频繁)轮询的方式会白白消耗大量CPU资源——毕竟绝大多数时间里now == 0这个条件都不成立,程序一直在做无用的循环检查,在性能有限的设备上还会明显增加功耗。

更高效的解决方案:计算延迟后睡眠

我们可以先算出当前时间距离下一分钟0秒的时间差,让程序进入睡眠状态,到时间再唤醒执行函数。这样程序大部分时间都处于低资源占用的睡眠状态,不会空耗CPU,还能避免time.sleep(60)带来的累积延迟问题,因为每次都会重新校准到下一分钟的开头。

示例代码如下:

import datetime
import time

def your_target_function():
    # 这里替换成你要执行的实际逻辑
    print(datetime.datetime.now())

while True:
    now = datetime.datetime.now()
    # 计算下一分钟0秒的时间点(自动处理跨小时/跨天的边界情况)
    next_execution = now.replace(
        minute=now.minute + 1,
        second=0,
        microsecond=0
    )
    # 计算需要睡眠的精确秒数
    sleep_duration = (next_execution - now).total_seconds()
    # 等待到指定时间点
    time.sleep(sleep_duration)
    # 执行目标函数
    your_target_function()

为什么这个方案更优?

  1. 资源高效:程序只有在等待结束时才会占用CPU执行逻辑,其余时间都在睡眠,不会空跑循环浪费资源
  2. 定时精准:每次都会重新校准到下一分钟的开头,不会因为函数执行耗时产生累积偏移
  3. 鲁棒性强:自动处理跨小时、跨天的特殊情况,比如23:59分的时候,会自动计算到次日00:00的延迟

关于你原代码的补充说明

你的原代码确实能实现“每分钟开头执行”的需求,但它的核心问题在于循环没有任何停顿,会让CPU核心一直处于忙碌状态。如果是在桌面电脑上可能感知不明显,但在树莓派这类嵌入式设备上,这种轮询方式会显著拉高CPU使用率,影响其他程序的正常运行。

内容的提问来源于stack exchange,提问作者Romario Williams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:44:08