python(4)–yield实现异步
首先我们假设一个情景:一个人做包子,一次只能做一个;来了两个吃包子的,做包子做好了包子依次分给两个吃包子的。
先上代码:
import time '''
一个做包子吃包子模型,一个做包子的,两个吃包子的,包子一个一个做,做好后依次分给两个吃包子的吃货
''' def chibaozi(name):
while True:
baozi = yield
print("第%s个包子做出来了,分给%s" % (baozi, name)) def zengbaozi():
chihuo1 = chibaozi('张三') #定义两个吃货
chihuo2 = chibaozi('李四')
chihuo1.__next__() #先执行一次next,为了让包子停在yield位置,准备打印
chihuo2.__next__()
print("厨师开始蒸包子了!!吃货们请各自就绪!!")
for i in range(1, 11):
if i%2 == 0:
chihuo2.send(i) #将i的值传给yield,请记住send()函数用法
else:
chihuo1.send(i)
time.sleep(2)
print("包子都吃完了,吃货们该走了!")
运行一下,看看结果:
厨师开始蒸包子了!!吃货们请各自就绪!!
第1个包子做出来了,分给张三
第2个包子做出来了,分给李四
第3个包子做出来了,分给张三
第4个包子做出来了,分给李四
第5个包子做出来了,分给张三
第6个包子做出来了,分给李四
第7个包子做出来了,分给张三
第8个包子做出来了,分给李四
第9个包子做出来了,分给张三
第10个包子做出来了,分给李四
包子都吃完了,吃货们该走了!
python(4)–yield实现异步的更多相关文章
- 【Python】迭代器、生成器、yield单线程异步并发实现详解
转自http://blog.itpub.net/29018063/viewspace-2079767 大家在学习python开发时可能经常对迭代器.生成器.yield关键字用法有所疑惑,在这篇文章将从 ...
- Python之路,Day10 - 异步IO\数据库\队列\缓存
Python之路,Day9 - 异步IO\数据库\队列\缓存 本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitM ...
- Day10 - Python协程、异步IO、redis缓存、rabbitMQ队列
Python之路,Day9 - 异步IO\数据库\队列\缓存 本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitM ...
- Python web框架 Tornado异步非阻塞
Python web框架 Tornado异步非阻塞 异步非阻塞 阻塞式:(适用于所有框架,Django,Flask,Tornado,Bottle) 一个请求到来未处理完成,后续一直等待 解决方案: ...
- Python关键字yield的解释(stackoverflow)
3.1. 提问者的问题 Python关键字yield的作用是什么?用来干什么的? 比如,我正在试图理解下面的代码: def node._get_child_candidates(self, dista ...
- python 关键字yield解析
python 关键字yield解析 yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator.y ...
- [转]Python中yield的解释
转自: http://python.jobbole.com/83610/ 本文作者: 伯乐在线 - wklken .未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者. 翻译 来源于stackover ...
- Python Web框架 tornado 异步原理
Python Web框架 tornado 异步原理 参考:http://www.jb51.net/article/64747.htm 待整理
- Python中yield和yield from的用法
yield python中yield的用法很像return,都是提供一个返回值,但是yield和return的最大区别在于,return一旦返回,则代码段执行结束,但是yield在返回值以后,会交出C ...
随机推荐
- Windwos Server 2008: 当网卡有多个IP地址时,如何指定缺省地址?
这实际是一个当应用向外发起连接时,协议栈对源IP地址的选择问题.如果你的应用没有显式绑定一个本地地址,协议栈会选择一个"最佳"的本地地址来使用. 从 Vista 之后这个选择策略发 ...
- 机器学习框架Scikit Learn的学习
一 安装 安装pip 代码如下:# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=83 ...
- 多线程之 CountDownLatch
CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. CountDownLatch如其所写,是一个倒计数的锁存器,当计数减至0时触发特定 ...
- webSocket vnc rfb
- 查看Linux里某文件的前面/后面几行中的某一行
如,我想看/etc/profile文件的前5行里的第5行. 则, head -5 /etc/profile | tail -1 管道|啊,很简单,就是把左边命令的结果,作为右边的输入. 如, ...
- cocos2d-x图片变灰或者变亮
//根据现有CCSprite,变亮和变灰 CCSprite* FlyLeaf::graylightWithCCSprite(CCSprite* oldSprite,bool isLight) { ...
- RTMP、RTSP、HTTP视频协议详解(转)
一.RTMP.RTSP.HTTP协议 这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议.理论上这三种都可以用来做视频直播或点播.但通常来说,直播一般用 RTMP.RTSP.而点播用 H ...
- 启动程序的同时传参给接收程序(XE8+WIN764)
相关资料: http://blog.csdn.net/yanjiaye520/article/details/7590252 注意事项: 1.ParamStr(0)是实例自己. 2.传的参数是以空格分 ...
- HDU 5783 Divide the Sequence (贪心)
Divide the Sequence 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5783 Description Alice has a seq ...
- POJ 2236 Wireless Network (并查集)
Wireless Network 题目链接: http://acm.hust.edu.cn/vjudge/contest/123393#problem/A Description An earthqu ...