三招搞定Python定时任务,总有一款适合你

平时写代码的时候,经常遇到需要让程序"等一会儿"或者"定时执行"的情况吧?比如每天凌晨自动备份数据库,每隔一小时抓取一次网页数据,或者让程序延迟几秒再执行某个操作。今天我就来给大家聊聊Python实现定时任务的三种常用方法,分别是time、schedule和APScheduler。

先说说我最开始用的土办法------time模块,要实现个定时功能,直接import time,然后time.sleep(60)就让程序睡一分钟。简单粗暴,确实有效!

1. time模块

time模块是Python自带的,不用安装任何东西,直接import就能用。它的核心就两个方法:time.sleep()和time.time()。

sleep()方法可以让程序暂停指定的秒数,比如:

python 复制代码
import time

print("程序开始")
time.sleep(5)  # 暂停5秒
print("5秒到了!")

而time()方法可以获取当前时间戳,用来计算时间间隔:

简单易用,无需安装额外库;但是功能单一,只能实现简单的延迟执行,无法处理复杂定时任务

不过在实际项目中,如果只用time模块实现每天定时执行,代码会写得比较臃肿,得自己写循环判断时间。

2. schedule库:轻量级定时任务利器

后来我发现了schedule这个库,简直像是打开了新世界的大门!它专门为定时任务设计,API设计得非常人性化。

首先需要安装:pip install schedule

它的用法读起来就像英语句子一样自然:

python 复制代码
import schedule
import time

def job():
    print("我在工作...")

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

# 每天10:30执行
schedule.every().day.at("10:30").do(job)

# 每周一执行
schedule.every().monday.do(job)

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

看到没有?代码几乎可以当英文读:"every 10 minutes do job",太直观了!如果想设置成其他的也是可以的,里面还有小时,秒,天等函数,根据自己的需求调用就行了。截图看一看

功能比time模块丰富多了,而且是轻量级的不占资源;但是不够灵活需要配合起来使用。而且程序重启以后任务可能会丢失,这点得注意了!在单机环境下的简单定时任务,比如日常的自动化脚本、数据抓取等是可以进行使用的,基本上没啥问题。

3. APScheduler

现在工作中我最常用的是APScheduler(Advanced Python Scheduler),它确实配得上"Advanced"这个名字,功能强大到令人发指。

安装命令:pip install apscheduler

APScheduler支持三种调度器:

  • BlockingScheduler:阻塞式,适合单任务
  • BackgroundScheduler:后台运行,不影响主程序
  • AsyncIOScheduler:适配asyncio的版本

它还有四种触发器:

  • date:只执行一次
  • interval:间隔执行
  • cron:Linux crontab风格的定时任务
  • compound:组合触发器

来个实际例子:

python 复制代码
from apscheduler.schedulers.blocking import BlockingScheduler

def job():
    print('工作完成!')

# 创建调度器
scheduler = BlockingScheduler()

# 添加任务:每周一到周五早上9点执行
scheduler.add_job(job, 'cron', day_of_week='mon-fri', hour=9)

# 添加任务:每隔2小时执行一次
scheduler.add_job(job, 'interval', hours=2)

try:
    scheduler.start()
except KeyboardInterrupt:
    print("程序退出")

APScheduler还支持任务持久化(可以把任务保存到数据库)、分布式部署、任务监控等高级功能。 功能全面强大肯定就不用说了,而且支持持久化灵活性也强支持多种出发方式

总结对比

为了更直观,我做了个对比表格:

特性 time模块 schedule库 APScheduler
安装难度 无需安装 pip安装 pip安装
学习成本 很低 中等
功能丰富度 简单 中等 丰富
持久化支持
分布式支持
适用场景 简单延迟 日常脚本 生产环境

怎么选择?

  • 刚入门:先用time模块理解基本概念,毕竟刚开始就上强度谁能受得了,程序员压力够大了!哈哈
  • 写日常脚本:schedule是不二之选,简单够用,够用就行了,就跟吃饭一样能吃饱就行了。
  • 开发正式项目:果断上APScheduler,功能全面,我们变成上流了,那不仅要吃的好还要吃的饱。

本次分享就到这里,祝愿大家早日实现财富自由!

相关推荐
DLYSB_6 小时前
存储运维实战:基于 Ceph Event 监听与 Python 适配器的分布式存储健康度物理声光响应架构
运维·ceph·python·报警灯
陈随易6 小时前
FFmpeg 9.0 发布,代号 Lei,音视频处理再升级
前端·后端·程序员
阿童木写作6 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
阿童木写作8 小时前
Python实现Temu图片批量翻译自动化教程
运维·人工智能·python·自动化
就是一只白9 小时前
复制地理信息python版本
python
凌虚9 小时前
面向 MySQL 用户的 PostgreSQL 快速上手指南
数据库·后端·架构
看浪的路人9 小时前
第1讲:Agent 到底是什么?和 Chatbot 有什么区别
python·ai
瓦学妹10 小时前
什么是网络索引?它是如何工作的?
大数据·网络·python·网络爬虫
IT_陈寒10 小时前
Vite静态资源引用这个坑我踩得有点疼
前端·人工智能·后端
天天爱吃肉821810 小时前
商用车多体动力学实战笔记|第6篇:动力传动系统(发动机、变速箱、分动器、TCS、LSD限滑差速)
大数据·人工智能·笔记·python·嵌入式硬件·汽车