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命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
Python爬虫实现简单的爬取有道翻译功能示例
Jul 13 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
pyttsx3实现中文文字转语音的方法
Dec 24 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
python统计字符串中字母出现次数代码实例
Mar 02 Python
PyTorch加载自己的数据集实例详解
Mar 18 Python
PyCharm MySQL可视化Database配置过程图解
Jun 09 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
深度学习小工程练习之垃圾分类详解
Apr 14 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
js中传递特殊字符(+,&)的方法
2014/01/16 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
Python中random模块生成随机数详解
2016/03/10 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
Python os.access()用法实例
2019/02/18 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
印尼购物网站:iLOTTE
2019/10/16 全球购物
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
商务英语专业自荐信
2013/10/14 职场文书
淘宝网店营销策划书
2014/01/11 职场文书
管理失职检讨书
2014/02/12 职场文书
新闻发布会主持词
2014/03/28 职场文书
工作简历的自我评价
2019/05/16 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL