# Auther: Aaron Fan

"""
def consumer(name):
print("%s 准备吃包子啦!" % name)
while True:
baozi = yield
print("包子[%s]来了,被[%s]吃了!" % (baozi, name)) people = consumer("FanHeng")
people.__next__() stuffing = "胡萝卜陷"
people.send(stuffing) #把stuffing的值传给生成器consumer中的yield,并调用yield people.__next__() # 单纯的调用next不会给yield传值,仅仅是调用yield。所以程序显示的是:
# 包子[None]来了,被[FanHeng]吃了! stuffing = ["韭菜馅", "牛肉馅", "黄金菜团"]
for i in stuffing:
people.send(i)
""" # 完整的演示一个协程:
# 原理和上面的示例是一样的,都是用的yield和send来实现,只是这个示例使用了两个函数互相协作去完成了一个生产包子和吃包子的功能
import time
def consumer(name):
print("%s 准备吃包子啦!" % name)
while True:
baozi = yield
print("包子[%s]来了,被[%s]吃了!" % (baozi, name)) def producer(name):
people1 = consumer('Aaron')
people2 = consumer('James')
people1.__next__()
people2.__next__()
for i in range(6):
time.sleep(1)
print("\n做了1个包子,分成了两半")
people1.send(i)
people2.send(i) producer("FanHeng")

最新文章

  1. SDWebImage源码解读 之 NSData+ImageContentType
  2. 如何去除My97 DatePicker控件上右键弹出官网的链接
  3. 把Git Repository建到U盘上去(转)
  4. 常用webservice接口
  5. 工厂方法(factory method)
  6. oracle 利用flashback将备库激活为read wirte(10g 及上)
  7. Ubuntu的一些常用快捷键
  8. 【翻译】使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定
  9. 看了些关于rem的知识点,在这做个自我总结归纳
  10. Rocketmq整体分析
  11. python命令行解析工具argparse模块【1】
  12. linux学习心得之目录树开端与/etc(图文)
  13. Spark中的wordCount程序实现
  14. 自己写实现char TO wchar_t 的转换
  15. python 操作手机
  16. VS解决-无法打开文件“opencv_ts300d.lib”问题
  17. 微信为啥不能直接下载.apk安装包
  18. 【BZOJ】【1876】【SDOI2009】SuperGCD
  19. go语言基础之append扩容特点
  20. 前端 html border-right: 1px solid red;

热门文章

  1. oracle 删除当前用户下多个表
  2. js对象原型链
  3. Linux多进程多线程例子
  4. Linux环境下安装jenkins
  5. etcd服务端和客户端安装
  6. Linux环境变量从用户配置改为系统配置
  7. 【转】Jmeter安装 for windows
  8. 【转】Jmeter性能测试报告解析
  9. 源码编译安装ceph
  10. Java中计算对象的大小