Python 协程:
协程,又称微线程,纤程。英文名 Coroutine.一句话说明什么是协程: 协程是一种用户态的轻量级线程。
协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,
恢复先前保存的寄存器上下文和栈。因此:协程能保留上一次调用时的状态(即所有局部状态的一个特定组合)
每次过程重入时,就相当于进入上一次调用的状态。换种说法,进入上一次离开时所处逻辑流的位置
协程的好处:
-
无需线程上下文切换的开销
- 无需原子操作锁定及同步的开始
- 方便切换控制流,简化编程模型
- 高并发+高扩展性+低成本: 一个CPU支持上万的协程都不是问题,所有很适合高并发处理
协程的缺点:
- 无法利用多核CUP,
- 进行阻塞(Blocking)操作会阻塞个整个程序
1.1 yield协程:
import time import queue def consumer(name): print('--------------start------------') while True: new_baozi = yield print('%s is eating baozi %s' %(name,new_baozi)) time.sleep(1) def producer(): r = con.__next__() #也可以是Next(con) r = con2.__next__() n =0 while n < 5: n += 1 con.send(n) con2.send(n) print("