Python-yield模拟生产消费者模型
来源:互联网 发布:淘宝开店运营流程图 编辑:程序博客网 时间:2024/06/18 10:24
import timedef consumer(name): print("%s 准备吃包子啦!" %name) while True: baozi = yield print("包子[%s]来了,被[%s]吃了!" %(baozi,name))def producer(): c = consumer('A') c2 = consumer('B') c.__next__() c2.__next__() print("老子开始准备做包子啦!") for i in range(10): time.sleep(1) print("做了2个包子!") c.send(i) c2.send(i)producer()
OUTPUT:
A 准备吃包子啦!B 准备吃包子啦!老子开始准备做包子啦!做了2个包子!包子[0]来了,被[A]吃了!包子[0]来了,被[B]吃了!做了2个包子!包子[1]来了,被[A]吃了!包子[1]来了,被[B]吃了!做了2个包子!包子[2]来了,被[A]吃了!包子[2]来了,被[B]吃了!做了2个包子!包子[3]来了,被[A]吃了!包子[3]来了,被[B]吃了!做了2个包子!包子[4]来了,被[A]吃了!包子[4]来了,被[B]吃了!做了2个包子!包子[5]来了,被[A]吃了!包子[5]来了,被[B]吃了!做了2个包子!包子[6]来了,被[A]吃了!包子[6]来了,被[B]吃了!做了2个包子!包子[7]来了,被[A]吃了!包子[7]来了,被[B]吃了!做了2个包子!包子[8]来了,被[A]吃了!包子[8]来了,被[B]吃了!做了2个包子!包子[9]来了,被[A]吃了!包子[9]来了,被[B]吃了!
过程:
这两句不会执行print
c = consumer('A') #只是创建一个生成器,并不执行c2 = consumer('B')#只是创建一个生成器,并不执行
c.__next__()#开始执行print语句并yield None给baozi但是yield之后直接返回,所以没有打印"包子None来了"
c2.__next__()#开始执行print语句并yield None给baozi但是yield之后直接返回,所以没有打印"包子None来了"
print("老子开始准备做包子啦!")...
一下这两句直接跳到上一次yield记录的断点一步,并执行下面的吃包子语句。
c.send(i)c2.send(i)
这样就通过yield实现了单线程并行运算(做包子+吃包子)的效果。
阅读全文
0 0
- Python-yield模拟生产消费者模型
- 生产消费者模型
- 未完成-生产消费者模型
- linux生产消费者模型
- 生产消费者模型实现
- 生产消费者模型
- 并发基础 -- 生产消费者模型
- (转)生产消费者模型
- 模拟生产者/消费者模型
- 通过“生产者-消费者模型”理解Python协程和yield关键字
- pythond多线程——生产消费者模型
- 生产与消费者三种模型
- python生产者消费者模型
- Python 多线程 生产者消费者模型
- Python 生产者与消费者模型
- python生产者消费者简单模型
- 生产/消费者模型的实现 —— InfoQueue
- 线程条件变量应用(消费者和生产着模型)
- ubuntu安装ros
- redis系统命令简介笔记(2)
- 桶装水和白开水的缺点
- QT + VS2010 实现中英文切换
- java instanceof操作符
- Python-yield模拟生产消费者模型
- deep learning pretrained model
- 核密度估计与自适应带宽的核密度估计
- $(document).ready()笔记
- [乱搞]斐波那契数列与gcd之间一个有趣的定理
- Android图片处理框架之Fresco学习使用
- java filter过滤器的配置
- 面向对象和面向过程的区别
- MXNet的训练入口:fit.py源码详解