用yield写协程实现生产者消费者

Posted cxhzy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用yield写协程实现生产者消费者相关的知识,希望对你有一定的参考价值。

思路:

  yield可以使得函数阻塞,next,和send可以解阻塞,实现数据不竞争的生产者消费者模式

代码:

  import random  #随机数,模拟生产者的制造物

  def eat():    #消费者

    while True:

      item = (yield)

      print("消费了:",item)

    

  def pro(g):    #生产者

    next(g)

    while True:

      item = random.randint(0,99)

      print("生产了:",item)

      g.send(item)

  #调用

  g = eat()    #创建生成器实例

  pro(g)   

  图例:

    技术分享图片

 

   

 

    

以上是关于用yield写协程实现生产者消费者的主要内容,如果未能解决你的问题,请参考以下文章

Python中协程的实现

关于Python的协程问题总结

Lua协程的应用

python基础:协程详解

python 异步编程

用greenlet实现协程消费者生产者