下面是详细讲解“python定时任务schedule库用法详细讲解”的攻略:
1. 简介
Python的schedule库是一种定时任务库,可以让我们方便地在Python中执行周期性的任务。它可以替代Python自带的time.sleep()方法,因为它不会阻塞主线程。
2. 安装
在使用之前,需要安装schedule库。可以使用pip命令安装:
pip install schedule
3. 基础用法
schedule库的基本思想是创建一个任务,然后安排计划执行。有两种方式创建任务:使用装饰器和手动创建。
3.1 使用装饰器创建任务
使用装饰器可以将一个函数转换为一个可以安排计划执行的任务。下面是一个简单的例子:
import schedule
import time
def job():
print("I'm working...")
schedule.every(10).minutes.do(job)
while True:
schedule.run_pending()
time.sleep(1)
解释一下上述代码的意思,首先我们定义了一个函数 job()
,该函数它将会被执行,然后在第6行中通过 schedule.every(10).minutes.do(job)
将该任务以十分钟间隔添加到日程安排中。10分钟可以被换成其它时间段。在之后的 while
循环中,每秒钟,我们都会检查我们的日程表,以验证是否有要运行的任务。如果有,就会运行它们。
3.2 手动创建任务
手动创建任务需要我们使用 schedule.every()
方法来创建并安排日程表,下面是另一个例子:
import schedule
import time
def job(t):
print("I'm working...", t)
schedule.every(10).minutes.do(job, 'It is working')
while True:
schedule.run_pending()
time.sleep(1)
上面的代码将会每 10 分钟输出一句话 “I'm working... It is working” 。
4. 进阶用法
4.1 取消任务
被创建的每个任务都有一个唯一的任务ID,用于取消任务。我们可以使用 schedule.cancel_job()
方法取消一个已经创建的任务。下面是一个例子:
import schedule
import time
def job():
print("I'm working...")
schedule.every(10).minutes.do(job)
job_id = schedule.every().hour.do(job)
# 取消一个任务
schedule.cancel_job(job_id)
while True:
schedule.run_pending()
time.sleep(1)
在上面的例子中,我们先每10分钟执行一次 job()
,再每小时执行一次 job()
。最后使用 schedule.cancel_job()
取消我们在之前创建的每小时任务。
4.2 间隔时间
我们可以使用 schedule.every().interval
来间隔多少时间来执行任务,从而不是每小时、每10分钟等来执行。下面是一个例子:
import schedule
import time
def job():
print("I'm working...")
schedule.every(2).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
上述代码中,任务每 2 秒钟就会运行一次。
总结
schedule库是一种非常方便的定时任务库,可以方便地在Python中执行周期性任务,且不会阻塞主线程。在使用时,我们可以使用装饰器或手动创建任务。同时,schedule库支持取消任务和自定义间隔时间来执行任务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python定时任务schedule库用法详细讲解 - Python技术站