使用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。整个程序会一直运行下去,直到手动中断。
需要注意的是,这里的任务都是以协程的方式运行的,而不是真正的并发任务。因此,在实际应用中,可能需要更多的逻辑处理和线程控制来实现复杂的多任务处理。