Python实现基于定时器的多任务调度器
发布时间:2023-12-23 08:10:23
Python提供了多种实现多任务调度器的方法,其中一种是使用定时器。通过定时器,可以在指定的时间间隔内执行不同的任务,实现多任务调度。
下面是一个使用定时器实现多任务调度器的例子:
import threading
# 定义一个任务类,包含任务名称和执行函数
class Task:
def __init__(self, name, func):
self.name = name
self.func = func
def run(self):
print(f"Task {self.name} is running")
self.func()
# 定义两个任务函数,分别在不同时间执行
def task1():
print("Task 1 is running")
def task2():
print("Task 2 is running")
# 定义调度器类
class Scheduler:
def __init__(self):
self.tasks = [] # 存储任务的列表
self.timer = None # 定义定时器
def add_task(self, task, delay):
self.tasks.append((task, delay)) # 添加任务到列表
def run(self):
for task, delay in self.tasks:
self.timer = threading.Timer(delay, task.run) # 创建定时器
self.timer.start() # 启动定时器
# 创建调度器对象
scheduler = Scheduler()
# 创建两个任务对象并添加到调度器
task_1 = Task("Task 1", task1)
task_2 = Task("Task 2", task2)
scheduler.add_task(task_1, 2) # 在2秒后执行任务1
scheduler.add_task(task_2, 5) # 在5秒后执行任务2
# 启动调度器
scheduler.run()
在上面的例子中,定义了一个Task类来存储任务的名称和执行函数。创建两个任务函数task1和task2,分别在不同的时间执行。任务函数会打印出任务的名称,并执行相应的代码逻辑。
然后定义了一个Scheduler类,用于添加任务并启动定时器。Scheduler类包含一个add_task方法,用于向任务列表中添加任务,并指定任务执行的延迟时间。Scheduler类还有一个run方法,用于遍历任务列表,创建定时器并启动。
在主函数中,创建了一个调度器对象scheduler,并分别创建了两个任务对象task_1和task_2。然后,将任务对象添加到调度器,并指定任务的延迟时间。最后,调用scheduler的run方法启动调度器。
运行上述代码,将会输出以下结果:
Task 1 is running Task 1 is running Task 2 is running
可以看到,任务1在2秒后执行,并打印出了任务的名称和执行结果。然后,任务2在5秒后执行,并打印出了任务的名称和执行结果。
这就是一个简单的使用定时器实现的多任务调度器。通过添加不同的任务和延迟时间,可以实现在不同的时间点执行不同的任务。
