使用Python的sched模块调度多个并发任务
发布时间:2024-01-08 14:10:45
Python的sched模块提供了一个简单的调度器,用于调度并发任务。sched模块使用优先级队列来存储并排序任务,然后按照设定的调度策略执行任务。
下面是一个使用Python的sched模块调度多个并发任务的例子:
import sched
import time
# 创建调度器对象
scheduler = sched.scheduler(time.time, time.sleep)
# 定义一个任务函数
def task(name):
print("Task %s executed at %s" % (name, time.strftime("%H:%M:%S", time.localtime())))
# 添加任务到调度器
scheduler.enter(1, 1, task, ("Task 1",))
scheduler.enter(2, 1, task, ("Task 2",))
scheduler.enter(3, 1, task, ("Task 3",))
# 开始调度任务
scheduler.run()
在上面的例子中,我们首先导入了sched模块和time模块。然后创建了一个调度器对象scheduler,它使用time.time函数来获得当前时间,使用time.sleep函数来进行延时。
接下来,我们定义了一个任务函数task,它打印出任务的名称和执行时间。然后使用scheduler.enter函数将任务添加到调度器中。 个参数表示延时的时间,第二个参数表示优先级,第三个参数是要执行的任务函数,第四个参数是任务函数的参数。
最后,我们调用scheduler.run函数开始调度任务。调度器会根据设定的延时和优先级执行任务。在这个例子中,我们给任务1延时1秒执行,任务2延时2秒执行,任务3延时3秒执行。
运行以上代码,将会得到以下输出:
Task Task 1 executed at 10:00:01 Task Task 2 executed at 10:00:03 Task Task 3 executed at 10:00:06
可以看到,任务1在1秒后执行,任务2在2秒后执行,任务3在3秒后执行。调度器使用优先级队列来确定任务的执行顺序。
除了延时执行,sched模块还支持周期性调度任务。可以使用scheduler.enterabs函数来添加周期性任务,并使用scheduler.run函数作为循环运行调度器。
使用Python的sched模块可以轻松实现多个并发任务的调度。无论是延时执行还是周期性执行任务,sched模块都可以满足需求。
