zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python高级线程编程-定时器和周期任务(二)

Python线程编程 任务 高级 定时器 周期
2023-06-13 09:18:44 时间

使用sched模块实现定时器和周期任务

Python标准库中的sched模块提供了一个基于时间的事件调度程序,可以用来实现定时器和周期任务。

下面是一个使用sched模块实现定时器的示例代码:

import sched
import time

def say_hello():
    print("Hello World")

s = sched.scheduler(time.time, time.sleep)
s.enter(5.0, 1, say_hello, ())
s.run()

这里我们定义了一个函数say_hello(),使用sched.scheduler()方法创建了一个调度程序对象s,调度程序使用time.time()函数返回的时间戳作为起点,使用time.sleep()函数实现延时,然后使用s.enter()方法将say_hello()函数添加到调度程序中。第一个参数5.0指定了定时器的时间间隔为5秒,1指定了优先级,最后一个参数()表示参数为空。

除了定时器,我们还可以使用sched模块创建一个周期任务,如下所示:

import sched
import time

def say_hello():
    print("Hello World")

def start_task():
    s.enter(5.0, 1, start_task, ())
    say_hello()

s = sched.scheduler(time.time, time.sleep)
s.enter(5.0, 1, start_task, ())
s.run()

这里我们定义了两个函数,一个是say_hello()函数,另一个是start_task()函数。start_task()函数在每次调用say_hello()函数后,将使用s.enter()方法创建一个新的定时器并添加到调度程序中,从而实现周期任务。