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

如何在Python中实现永久运行的定时任务:每5/10分钟执行不同函数

实现Python定时重复任务的两种实用方案

嘿,我来帮你搞定这个定时任务的问题!先直接回答你的疑问:不一定非要用threading,但用线程的话会让你的定时逻辑更灵活,尤其是当任务可能耗时的时候。下面给你两种从简单到进阶的方案,你可以根据自己的需求选择。

方案一:单线程轮询(新手友好)

这个方案逻辑特别直观,不用接触复杂的线程概念,适合刚入门的朋友。核心思路就是用一个无限循环,每次循环里检查当前时间是否到了执行任务的节点,然后休眠一小段时间再继续轮询。

import time
from datetime import datetime

def RunMeEvery5min():
    print(f"执行5分钟任务: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
    # 在这里替换成你实际要执行的任务逻辑

def RunMeEvery10min():
    print(f"执行10分钟任务: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
    # 在这里替换成你实际要执行的任务逻辑

# 记录上次执行两个任务的时间戳
last_5min_run = time.time()
last_10min_run = time.time()

while True:
    current_time = time.time()
    # 检查是否到了5分钟任务的执行时间
    if current_time - last_5min_run >= 5 * 60:
        RunMeEvery5min()
        last_5min_run = current_time
    # 检查是否到了10分钟任务的执行时间
    if current_time - last_10min_run >= 10 * 60:
        RunMeEvery10min()
        last_10min_run = current_time
    # 每次循环休眠1秒,避免占用过多CPU资源
    time.sleep(1)

方案特点:

  • 逻辑简单,容易理解和调试,完全符合你写顺序程序的思维习惯
  • 小缺点:如果某个任务执行时间很长(比如超过1分钟),会阻塞循环,影响下一次任务的执行时间

方案二:多线程调度(灵活可靠)

如果你的任务可能耗时,或者希望两个任务严格按照自己的周期执行(比如不管上一次有没有完成,到点就启动新的执行),那用threading就很合适。我们可以用threading.Timer来实现定时重复调用。

import threading
import time
from datetime import datetime

def RunMeEvery5min():
    print(f"执行5分钟任务: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
    # 在这里替换成你实际要执行的任务逻辑
    # 任务完成后,自动调度下一次执行
    threading.Timer(5 * 60, RunMeEvery5min).start()

def RunMeEvery10min():
    print(f"执行10分钟任务: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
    # 在这里替换成你实际要执行的任务逻辑
    # 任务完成后,自动调度下一次执行
    threading.Timer(10 * 60, RunMeEvery10min).start()

if __name__ == "__main__":
    # 启动第一次任务执行
    RunMeEvery5min()
    RunMeEvery10min()
    # 让主线程保持运行,否则程序会直接退出
    while True:
        time.sleep(3600)  # 休眠1小时,避免占用CPU资源

方案特点:

  • 两个任务独立运行,互相不干扰,即使其中一个任务卡住,另一个依然能按周期执行
  • 每次任务执行完成后才会调度下一次,避免同一任务重复叠加执行(如果需要叠加执行可以调整逻辑)
  • 扩展性强,以后新增定时任务只需要复制类似的函数和启动逻辑即可

总结

  • 如果你的任务都是轻量、快速完成的,单线程方案完全够用,上手零门槛
  • 如果任务可能耗时,或者需要严格的定时精度,多线程方案会更靠谱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:48:45