Python生成器实现简单"生产者消费者"模型代码实例


Posted in Python onMarch 27, 2020

生成器定义

在Python中,一边循环一边计算的机制,称为生成器:generator。

为什么要有生成器

列表所有数据都在内存中,如果有海量数据的话将会非常耗内存。

如:仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

如果列表元素按照某种算法推算出来,那我们就可以在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。

简单一句话:我又想要得到庞大的数据,又想让它占用空间少,那就用生成器!

使用生成器实现简单的生产者消费者模型

1、效果截屏

Python生成器实现简单"生产者消费者"模型代码实例

代码如下:

import time

def consumer(name):
  print('%s 开始买手机' %name)
  while True:
    baozi=yield
    print('\033[31;1m手机[%s] 造好了,被[%s] 买了!\033[0m' %(baozi,name))

c = consumer('小明')
c.__next__() # __next__是只唤醒

b1='小米Max 10'
c.send(b1) #send 是唤醒 yield,同时给yield 传入数据。__next__是只唤醒

def producer(name):
  c=consumer('A')
  c2=consumer('B')
  c.__next__()
  c2.__next__()
  print('开始造手机了')
  for i in range(10):
    time.sleep(1)
    print('\033[32;1m造了2个手机\033[0m')
    c.send(i)
    c2.send(i)

producer('alex')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python二分法实现实例
Nov 21 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
Python面向对象之继承代码详解
Jan 29 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
在Python中实现替换字符串中的子串的示例
Oct 31 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
Python常见数字运算操作实例小结
Mar 22 Python
python 同时读取多个文件的例子
Jul 16 Python
使用Django搭建网站实现商品分页功能
May 22 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
Python基于Webhook实现github自动化部署
Nov 28 Python
python爬虫--selenium模块
Mar 31 Python
python数据库编程 Mysql实现通讯录
Mar 27 #Python
python数据库编程 ODBC方式实现通讯录
Mar 27 #Python
django 读取图片到页面实例
Mar 27 #Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 #Python
django列表筛选功能的实现代码
Mar 27 #Python
python实现猜数游戏
Mar 27 #Python
手把手教你安装Windows版本的Tensorflow
Mar 26 #Python
You might like
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
Yii框架安装简明教程
2020/05/15 PHP
javascript 限制输入脚本大全
2009/11/03 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
python要安装在哪个盘
2020/06/15 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
大学生入党思想汇报
2014/01/14 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
销售岗位职责范本
2014/06/12 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS
解决redis批量删除key值的问题
2022/03/23 Redis