ZetCode

Python Schedule

最后修改:2025 年 2 月 15 日

在本文中,我们将展示如何在 Python 中使用 schedule 库。 schedule 库用于安排任务在特定时间间隔或时间运行。它特别适用于自动化重复性任务,例如发送电子邮件、生成报告或执行备份。

schedule 库易于使用,并提供了一个简单的 API 用于调度任务。

安装 Schedule 库

在使用 schedule 库之前,您需要使用 pip 安装它。

$ pip install schedule

调度一个任务

以下示例演示了如何调度一个任务每 10 秒运行一次。

main.py
import schedule
import time

def task():
    print("Task is running...")

# Schedule the task to run every 10 seconds
schedule.every(10).seconds.do(task)

# Keep the script running
while True:
    schedule.run_pending()
    time.sleep(1)

在此程序中,schedule.every(10).seconds.do(task) 函数用于调度 task 函数每 10 秒运行一次。 schedule.run_pending() 函数检查是否有任何已调度的任务到期需要运行,并执行它们。

$ python main.py
Task is running...
Task is running...
Task is running...

在特定时间调度任务

以下示例演示了如何调度一个任务每天在特定时间运行。

main.py
import schedule
import time

def task():
    print("Task is running...")

# Schedule the task to run at 10:00 AM every day
schedule.every().day.at("10:00").do(task)

# Keep the script running
while True:
    schedule.run_pending()
    time.sleep(1)

在此程序中,schedule.every().day.at("10:00").do(task) 函数用于调度 task 函数每天上午 10:00 运行。

$ python main.py
Task is running...

调度多个任务

以下示例演示了如何在不同的时间间隔调度多个任务。

main.py
import schedule
import time

def task1():
    print("Task 1 is running...")

def task2():
    print("Task 2 is running...")

# Schedule task1 to run every 5 seconds
schedule.every(5).seconds.do(task1)

# Schedule task2 to run every 10 seconds
schedule.every(10).seconds.do(task2)

# Keep the script running
while True:
    schedule.run_pending()
    time.sleep(1)

在此程序中,task1 被安排每 5 秒运行一次,task2 被安排每 10 秒运行一次。

$ python main.py
Task 1 is running...
Task 1 is running...
Task 2 is running...
Task 1 is running...

取消已调度的任务

以下示例演示了如何取消已调度的任务。

main.py
import schedule
import time

def task():
    print("Task is running...")

# Schedule the task to run every 5 seconds
job = schedule.every(5).seconds.do(task)

# Keep the script running for 15 seconds
start_time = time.time()
while time.time() - start_time < 15:
    schedule.run_pending()
    time.sleep(1)

# Cancel the task
schedule.cancel_job(job)
print("Task canceled.")

在此程序中,schedule.cancel_job(job) 函数用于在 15 秒后取消已调度的任务。

$ python main.py
Task is running...
Task is running...
Task is running...
Task canceled.

来源

Python Schedule - 文档

在本文中,我们展示了如何在 Python 中使用 schedule 库进行任务调度。 schedule 库是自动化重复性任务的强大工具。

作者

我的名字是 Jan Bodnar,我是一位充满热情的程序员,拥有丰富的编程经验。 我自 2007 年以来一直在撰写编程文章。 迄今为止,我已经撰写了超过 1,400 篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有 Python 教程