三招搞定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,功能全面,我们变成上流了,那不仅要吃的好还要吃的饱。

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

相关推荐
夜雪一千9 分钟前
如何使用Python做舆情分析
人工智能·python·数据分析
azhou的代码园12 分钟前
景区游船预约服务系统
人工智能·spring boot·后端
小灰灰搞电子32 分钟前
Rust Attribute(属性标记)完整整理
开发语言·后端·rust
Ticnix40 分钟前
MCP 工具拿不到 user_id?用 contextvars 做请求级用户隔离
python·agent·mcp
gb421528740 分钟前
WPS 里的 Word快速合成照片
python
tedcloud1231 小时前
God‘s Eye View 怎么搭建?在云服务器上部署一个实时 3D 地球可视化平台
linux·服务器·开发语言·后端·rust
深入云栈1 小时前
Netty 4.2.x 源码深度解析 (十三):Epoll 传输 —— Linux 高性能 IO 的 Netty 实现
java·后端
Lyra_Infra1 小时前
从一段错误 JSON 说起:Policy、Role 与 IAM
后端·json·aigc
Charlie_Byte1 小时前
在用户目录安装多版本 JDK,并用环境变量切换
后端