关键词

python定时任务schedule库用法详细讲解

下面是详细讲解“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库支持取消任务和自定义间隔时间来执行任务。

本文链接:http://task.lmcjl.com/news/14953.html

展开阅读全文