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脚本把sqlAlchemy对象转换成dict的教程
May 29 Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 Python
python爬虫获取京东手机图片的图文教程
Dec 29 Python
基于python神经卷积网络的人脸识别
May 24 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
Django 路由控制的实现
Jul 17 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
Aug 31 Python
Python编写打字训练小程序
Sep 26 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
python ubplot使用方法解析
Jan 10 Python
在django中form的label和verbose name的区别说明
May 20 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 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
php 什么是PEAR?(第三篇)
2009/03/19 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
javascript 字符串连接的性能问题(多浏览器)
2008/11/18 Javascript
JavaScript 三种创建对象的方法
2009/10/16 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
TensorFlow Session会话控制&Variable变量详解
2018/07/30 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
新闻专业个人求职信
2013/12/19 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
年终总结会主持词
2014/03/25 职场文书
主题实践活动总结
2014/05/08 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
2014年科协工作总结
2014/12/09 职场文书
小学优秀学生评语
2014/12/29 职场文书
节约用电倡议书
2015/04/28 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android