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网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
Jun 09 Python
python 迭代器和iter()函数详解及实例
Mar 21 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
简单了解python协程的相关知识
Aug 31 Python
python之array赋值技巧分享
Nov 28 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
python给图像加上mask,并提取mask区域实例
Jan 19 Python
Python参数传递对象的引用原理解析
May 22 Python
python怎么提高计算速度
Jun 11 Python
Python 利用argparse模块实现脚本命令行参数解析
Dec 28 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下清空字符串中的HTML标签的代码
2010/09/06 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
Javascript 检测、添加、移除样式(className)函数代码
2009/09/08 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
python基于socket实现网络广播的方法
2015/04/29 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
python实现智能语音天气预报
2019/12/02 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
现金会计岗位职责
2013/12/05 职场文书
表彰会主持词
2014/03/26 职场文书
首席执行官观后感
2015/06/03 职场文书
投诉书格式范本
2015/07/02 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书