相关概念

目的

单线程下实现并发

概念特性

4.5 协程 

纤程,微线程
非抢占多任务子程序的计算机组件
允许不同入口点的暂停和开始
简单来说: 协程是可以暂停执行的函数

内部原理

记录一个函数的上下文栈帧(空间),
协程调度切换时会将记录的上下文保存,在切换回来时候进行调取,
恢复原有的执行内容,以便从上一次执行的位置继续执行。    

优缺点

优点:
        切换在应用层完成,开销小
        单线程程序,不需要进行共享资源的互斥处理

缺点:
        无法利用计算机多核资源

yield 

4.5 协程

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())
View Code

相关文章:

  • 2021-11-27
  • 2021-06-19
  • 2021-04-07
  • 2022-01-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-27
猜你喜欢
  • 2021-08-07
  • 2021-09-07
  • 2021-11-16
  • 2021-06-14
  • 2021-06-20
  • 2022-03-08
  • 2021-09-26
相关资源
相似解决方案