相关概念
目的
单线程下实现并发
概念特性
纤程,微线程
非抢占多任务子程序的计算机组件
允许不同入口点的暂停和开始
简单来说: 协程是可以暂停执行的函数
内部原理
记录一个函数的上下文栈帧(空间),
协程调度切换时会将记录的上下文保存,在切换回来时候进行调取,
恢复原有的执行内容,以便从上一次执行的位置继续执行。
优缺点
优点:
切换在应用层完成,开销小
单线程程序,不需要进行共享资源的互斥处理
缺点:
无法利用计算机多核资源
yield
yield send 实例
import time def wrapper(func): def inner(*args,**kwargs): ret =func(*args,**kwargs) next(ret) return ret return inner @wrapper def consumer(): while True: x= yield print(x) def producter(target): '''生产者造值''' # next(g) #相当于g.send(None) for i in range(10): time.sleep(0.5) target.send(i)#要用send就得用两个yield producter(consumer())