欢迎访问宙启技术站
智能推送

使用Python的sched模块定时执行任务

发布时间:2024-01-08 14:07:40

sched模块是Python标准库中的一个模块,用于定时执行任务。它提供了一种调度机制,可以在指定的时间执行某个任务,比如定时运行一个函数或者在指定时间向某个邮箱发送邮件。

下面是一个使用sched模块定时执行任务的例子:

import sched
import time

# 创建一个调度器对象
scheduler = sched.scheduler(time.time, time.sleep)

# 定义一个任务函数,比如打印当前时间
def print_time():
    print("Current time is:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

# 设置一个定时任务,每隔5秒执行一次print_time函数
def schedule_task():
    scheduler.enter(5, 1, schedule_task)
    print_time()

# 程序入口
if __name__ == '__main__':
    # 启动定时任务
    scheduler.enter(0, 1, schedule_task)
    scheduler.run()

这段代码中,我们首先导入了sched模块和time模块。

然后,我们通过sched.scheduler函数创建了一个调度器对象,并将time.time和time.sleep作为参数传入。这两个函数分别用于返回当前时间和暂停一段时间。

接下来,我们定义了一个print_time函数,用于打印当前时间。

然后,我们定义了一个schedule_task函数,用于设置定时任务。该函数中,我们首先调用scheduler.enter函数,该函数接受三个参数:延迟时间(以秒为单位),优先级和要执行的任务。在这个例子中,我们设置了每隔5秒执行一次定时任务。

最后,在程序入口处,我们在调度器中插入一个任务,然后启动调度器。

当你运行这段代码时,你会看到每隔5秒打印一次当前时间。

sched模块还提供了其他一些函数,比如可以取消任务、修改任务的执行时间等。不同的任务可以有不同的优先级,也可以使用不同的时间单位,比如小时、分钟等。

值得注意的是,这里使用的是阻塞方式调度任务,也就是说,scheduler.run()会一直阻塞程序直到所有任务完成。如果你想在后台异步执行任务,可以使用多线程或者多进程来实现。

总结起来,使用sched模块可以很方便地实现定时执行任务的功能,无论是定时备份数据、定时发送邮件还是其他定时任务,都可以通过sched模块轻松实现。