标签:上下 简单的 英文 寄存器 color 最简 start producer 轻量级
协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程。
协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。
最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。
第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。
因为协程是一个线程执行,那怎么利用多核CPU呢?最简单的方法是多进程+协程,既充分利用多核,又充分发挥协程的高效率,可获得极高的性能。
import queue,time def consumer(name): print(‘start‘) while True: new_baozi=yield #生成器遇到next 先返回yield后的值, # 如果遇到send(值)把此值赋给new_baozi,第一次若遇到send(值),值只能是None print(‘%s吃%d号包子 ‘%(name,new_baozi)) def producer(): next(con) next(con2) n=0 while n<5: n+=1 print(‘生产%d号包子‘ % n) con.send(n) con2.send(n) if __name__==‘__main__‘: con=consumer(‘c1‘) #创建生成器对象 con2=consumer(‘c2‘) p=producer()
符合什么条件就能称之为协程:
标签:上下 简单的 英文 寄存器 color 最简 start producer 轻量级
原文地址:https://www.cnblogs.com/zhaowei5/p/9337492.html