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

Python每日定时任务高效实现:无需while循环且精度可达秒级

高效Python定时任务实现方案

方案1:直接使用系统级调度(最推荐,零后台资源占用)

该方案完全不需要自研调度逻辑、也不需要后台常驻进程,资源消耗是所有方案中最低的

  • 操作逻辑:把你的业务逻辑改成单次执行的Python脚本,删除所有schedule相关代码和while循环
  • Windows端配置:打开「任务计划程序」,新建任务,触发器设置为每天08:00触发,操作设置为启动python.exe并传入你的脚本路径作为参数
  • 多任务支持:如果需要不同时段执行不同任务,新增多个触发器或者多个任务项即可,原生支持秒级触发精度
  • 优势:不需要维护常驻程序,系统级调度的稳定性远高于自研逻辑

方案2:使用APScheduler实现进程内优雅调度(适合需要在同一Python进程内管理多任务的场景)

不需要手动写while循环,库内部自动实现低功耗调度逻辑,CPU占用几乎为0,支持秒级精度

首先安装依赖库:
pip install apscheduler

参考实现代码:

from apscheduler.schedulers.blocking import BlockingScheduler

def job(t):
    print(f"I'm working... {t}")
    return

if __name__ == '__main__':
    scheduler = BlockingScheduler()
    # 添加早8点定时任务
    scheduler.add_job(job, 'cron', hour=8, minute=0, second=0, args=['It is 08:00'])
    # 可按需添加任意多其他定时任务
    # scheduler.add_job(其他任务函数, 'cron', hour=12, minute=30, args=['其他任务参数'])
    scheduler.start()
  • 说明:BlockingScheduler启动后会自动进入等待状态,没有任务时处于休眠状态,不会空占CPU资源,触发精度最高可达毫秒级。启动后只需要用Windows任务计划程序设置开机自动运行该脚本即可。

原有schedule方案的低成本优化

如果不想改动现有基于schedule库的代码,只需要在while循环里添加一行time.sleep(1)即可避免CPU空转,修改后CPU占用会降到几乎可以忽略的水平,示例如下:

import schedule
import time

def job(t):
    print(f"I'm working... {t}")
    return

schedule.every().day.at("08:00").do(job,'It is 08:00')

while True:
    schedule.run_pending()
    time.sleep(1) # 新增该行即可避免循环持续占用CPU

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:48:03