admin 管理员组

文章数量: 1184232

Pythonschedule 库是一个轻量级的任务调度工具,用于在特定时间或间隔执行函数。它语法简洁,适合简单的定时任务需求,但不适用于复杂调度场景(如分布式任务)。

一、安装

pip install schedule

二、 快速入门

基本用法

定时执行函数

import schedule
import time

def job():
    print("Task executed!")

# 每隔1分钟执行一次
schedule.every(1).minutes.do(job)

# 每秒检查任务是否需执行
while True:
    schedule.run_pending()
    time.sleep(1)  # 避免CPU满载

时间间隔

通过链式调用函数设置时间间隔

schedule.every(10).seconds.do(job)       # 每10秒
schedule.every().hour.do(job)            # 每小时
schedule.every().day.at("10:30").do(job) # 每天10:30
schedule.every().monday.do(job)         # 每周一

函数的参数传递

通过do方法,传递函数名及关键词参数

def greet(name):
    print(f"Hello, {name}!")

schedule.every(2).seconds.do(greet, name="Alice")

三、高级用法

取消任务

job = schedule.every(5).minutes.do(job)
schedule.cancel_job(job)  # 取消特定任务
schedule.clear()          # 取消所有任务

通过装饰器注册任务

def scheduler_decorator(func):
    def wrapper():
        schedule.every(10).seconds.do(func)
        return func
    return wrapper

@scheduler_decorator
def my_task():
    print("Decorated task.")

注意事项

任务默认在主线程执行,长时间任务会阻塞后续任务。建议结合多线程/异步:

启动线程

import threading

def run_continuously():
    while True:
        schedule.run_pending()
        time.sleep(1)

thread = threading.Thread(target=run_continuously, daemon=True)
thread.start()

schedule 是一个轻量级、语法简洁的 Python 定时任务调度库,适合简单的周期性任务管理。通过链式调用(如 .every(10).seconds.do(job))可快速定义任务,支持秒、分钟、小时、星期等多粒度调度,并能指定固定时间(如 .day.at("09:00"))。其核心逻辑依赖 run_pending() 轮询检查任务状态,需配合 time.sleep 避免 CPU 过载。

优缺点

  • 优点:在于上手简单、代码直观,适合脚本级定时需求(如数据备份、邮件提醒)。
  • 缺点:单线程阻塞执行,长时间任务会延迟后续调度;缺乏异常处理、持久化等高级功能,且原生不支持异步。

总结:schedule 是小规模定时任务的便捷选择,但在高并发、高精度或分布式场景下需更专业工具。

本文标签: 神奇 schedule python