admin 管理员组文章数量: 1184232
Python的schedule库是一个轻量级的任务调度工具,用于在特定时间或间隔执行函数。它语法简洁,适合简单的定时任务需求,但不适用于复杂调度场景(如分布式任务)。
一、安装
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任务调度库 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1766275661a3450632.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论