许多同学都问:
- 能不能每天早上自动发邮件?
- 我想每 5 分钟拉一次接口数据,怎么实现?
- 有没有办法像 Linux 的 crontab 那样在 Python 里定时执行任务?
有!而且只需 1 个库:schedule!

schedule
预见变化
加油每一位
✅ 什么是schedule?
schedule 是一个轻量级定时任务库,支持每分钟、每小时、每天、每周等常见任务调度,不需要像 APScheduler那样复杂。
优点总结:
- 安装简单(纯 Python,无依赖)
- 写法直观(几乎像写自然语言)
- 适合轻量级脚本、数据采集、自动运行程序

快速开始
1️⃣ 安装
pip3 install schedule
2️⃣ 每 10 秒执行一次任务
import schedule
import time
from datetime import datetime
def job():
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"{now} ⏰ 我执行了一次任务")
schedule.every(1).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
输出:
2025-07-09 20:53:31 ⏰ 我执行了一次任务
2025-07-09 20:53:32 ⏰ 我执行了一次任务
2025-07-09 20:53:33 ⏰ 我执行了一次任务
...
常用时间调度方式

常用时间调度方式
✅ 示例:每天 8 点自动运行脚本
import schedule
import time
from datetime import datetime
def backup():
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"{now} 开始备份数据库...")
# 每天指定时间执行
schedule.every().day.at("20:58").do(backup)
# 持续运行等待任务执行
while True:
schedule.run_pending()
time.sleep(1)
自动执行、无需 cron!
2025-07-09 20:58:00 开始备份数据库...
✅ 示例:多任务调度
import schedule
import time
from datetime import datetime
def backup():
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"{now} 开始备份数据库...")
def job1():
print(" 每分钟拉一次接口")
def job2():
print(" 每小时清理缓存")
schedule.every(1).minutes.do(job1)
schedule.every().hour.do(job2)
while True:
schedule.run_pending()
time.sleep(1)
️ 进阶技巧
✅ 1. 传参数
import schedule
import time
def increase_tariffs(name):
print(f"特朗普:对{name}征收19%关税")
schedule.every(10).seconds.do(increase_tariffs, name="印尼")
# 添加一个无限循环来持续检查调度器
while True:
schedule.run_pending()
time.sleep(1) # 避免CPU占用过高

✅ 2. 结合 subprocess 执行外部脚本
import schedule
import time
import subprocess
def run_script():
subprocess.run(["python", "hello.py"])
schedule.every().day.at("09:52").do(run_script)
# 添加一个无限循环来持续检查调度器
while True:
schedule.run_pending()
time.sleep(1) # 避免CPU占用过高
✅ 3. 指定运行次数(不写死死循环)
import schedule
import time
# 定义一个计数器,记录任务执行的次数
count = 0
# 定义任务函数 job()
def job():
global count # 声明使用全局变量 count
print("✅ 第", count + 1, "次执行") # 打印当前执行次数(count+1 是由于初始是0)
count += 1 # 计数器+1
# 如果执行次数达到3次,就撤销这个任务
if count >= 3:
return schedule.CancelJob # 返回 CancelJob 表明撤销任务
# 设置定时任务:每隔 1 秒执行一次 job()
schedule.every(1).seconds.do(job)
# 主循环:持续检查并执行定时任务
while True:
schedule.run_pending() # 检查是否有任务需要执行
time.sleep(1) # 每次循环暂停1秒,避免CPU占用过高

指定运行次数
实际场景推荐
- 每天定时推送通知 / 发邮件
- 数据爬虫定时抓取、写入数据库
- 日志清理、缓存刷新
- 自动打包上传 / 部署项目
- 定期发送接口请求、检查服务存活
附赠通用封装模板(复制可用)
import schedule
import time
from datetime import datetime
def my_job():
print(f"[{datetime.now()}] 正在执行任务...")
def run():
schedule.every().day.at("10:00").do(my_job)
while True:
schedule.run_pending()
time.sleep(1)
if __name__ == "__main__":
run()
小结

小结
点赞收藏 关注,不错过每一期高效 Python 工具分享!
下期预告:Python openpyxl:读写样式Excel一条龙,测试报表必备! 敬请期待!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...