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

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类来存储任务的名称和执行函数。创建两个任务函数task1task2,分别在不同的时间执行。任务函数会打印出任务的名称,并执行相应的代码逻辑。

然后定义了一个Scheduler类,用于添加任务并启动定时器。Scheduler类包含一个add_task方法,用于向任务列表中添加任务,并指定任务执行的延迟时间。Scheduler类还有一个run方法,用于遍历任务列表,创建定时器并启动。

在主函数中,创建了一个调度器对象scheduler,并分别创建了两个任务对象task_1task_2。然后,将任务对象添加到调度器,并指定任务的延迟时间。最后,调用schedulerrun方法启动调度器。

运行上述代码,将会输出以下结果:

Task 1 is running
Task 1 is running
Task 2 is running

可以看到,任务1在2秒后执行,并打印出了任务的名称和执行结果。然后,任务2在5秒后执行,并打印出了任务的名称和执行结果。

这就是一个简单的使用定时器实现的多任务调度器。通过添加不同的任务和延迟时间,可以实现在不同的时间点执行不同的任务。