使用greenlet
实现多任务的完整案例,并添加了详细注释:
import greenlet
def task1():
while True:
print("Task 1") # 打印任务1的标识符
gr2.switch() # 切换到任务2
def task2():
while True:
print("Task 2") # 打印任务2的标识符
gr1.switch() # 切换到任务1
# 创建两个 greenlet 对象,分别对应任务1和任务2
gr1 = greenlet.greenlet(task1)
gr2 = greenlet.greenlet(task2)
# 启动任务1
gr1.switch()
在这个案例中,我们定义了两个无限循环的任务task1
和task2
。每个任务都会先输出自己的标识符,然后将控制权转移到另一个任务上。
然后,我们创建了两个greenlet
对象gr1
和gr2
,并初始化它们分别对应task1
和task2
。接着,启动gr1
代表的task1
。此时程序会进入task1
的循环中,不断执行任务并切换到task2
,然后又切回到task1
。整个程序会一直运行下去,直到手动中断。
需要注意的是,这里的任务都是以协程的方式运行的,而不是真正的并发任务。因此,在实际应用中,可能需要更多的逻辑处理和线程控制来实现复杂的多任务处理。