1.协程-yield
import time
#任务1
def work1():
while True:
print("work1....")
yield
time.sleep(0.1)
#任务2
def work2():
while True:
print("work2....")
yield
time.sleep(0.1)
if __name__ == '__main__':
# 创建协程
g1 = work1()
g2 = work2()
while True:
next(g1)
next(g2)
2.协程-greenlet
import greenlet, time
#任务1
def work1():
while True:
print("work1....")
# 切换到另一个协程执行任务
g2.switch()
time.sleep(0.1)
#任务2
def work2():
while True:
print("work2....")
# 切换到另一个协程执行任务
g1.switch()
time.sleep(0.1)
if __name__ == '__main__':
# 创建了两个协程执行任务
g1 = greenlet.greenlet(work1)
g2 = greenlet.greenlet(work2)
# 启动协程
g1.switch()
3.协程-gevent
import gevent, time
from gevent import monkey
# 打补丁(gevent才知道哪些是耗时操作)
monkey.patch_all()
# 任务1
def work1():
print("work1...")
time.sleep(0.1)
# 任务1
def work2():
for i in range(15):
print("work2...")
# gevent.sleep(0.1)
time.sleep(0.1)
if __name__ == '__main__':
# gevent特点 是在执行一个耗时操作后才会交替执行
# 创建协程
g1 = gevent.spawn(work1)
g2 = gevent.spawn(work2)
# 主线程等待
g1.join()
g2.join()