利用计算机能够帮助我们执行定时定点或者间隔时间段的任务,特别是对于容易遗忘、重复操作、准点执行等任务非常方便。除了在 Linux 上使用 corntab 等完成之外,在 Python 中也可以编程实现定时定点等任务的执行。本篇介绍 time, threading.Timer, schedule, apscheduler 等四个模块。
Time
定时 3 秒后,依次执行相同任务 5 次
1 2 3 4 5 6 7 8 9 10 11
| from datetime import datetime import time
def showTime(count): time.sleep(count) print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
for i in range(5): showTime(3)
|
Threading.Timer
定时 3 秒后,同时执行相同任务 5 次
1 2 3 4 5 6 7 8 9 10 11 12
| from datetime import datetime from threading import Timer
def showTime(): print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
for i in range(5): count = 3 t = Timer(count, showTime) t.start()
|
schedule
每个 3 秒,执行任务
1 2 3 4 5 6 7 8 9 10 11 12 13
| import time import schedule
def showTime(): print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
schedule.every(3).seconds.do(showTime)
while True: schedule.run_pending() time.sleep(1)
|
apscheduler
定时顶点/间隔执行任务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| from datetime import datetime from apscheduler.schedulers.blocking import BlockingScheduler
def showTime(): print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
scheduler = BlockingScheduler(timezone="Asia/Shanghai")
scheduler.add_job(func=showTime, trigger="cron", second='*/3')
scheduler.start()
|
参考链接
- 你知道 Python 中的定时任务吗?
- python - 如何通过APScheduler 3.0的UTC时区?
- APScheduler定时框架
- Python任务调度模块APScheduler