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 translator使用实例
Sep 06 Python
python通过get,post方式发送http请求和接收http响应的方法
May 26 Python
python查看zip包中文件及大小的方法
Jul 09 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
python实现下载文件的三种方法
Feb 09 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
python实现梯度下降算法
Mar 24 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
Jan 29 Python
python多线程调用exit无法退出的解决方法
Feb 18 Python
pytorch常见的Tensor类型详解
Jan 15 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
Feb 28 Python
Python使用pyecharts控件绘制图表
Jun 05 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 得到根目录的 __FILE__ 常量
2008/07/23 PHP
深入php 正则表达式的学习探讨
2013/06/06 PHP
PHP实现微信发红包程序
2015/08/24 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
jquery插件之easing使用
2010/08/19 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
微信小程序实现图片上传功能
2018/05/28 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
Python爬虫代理IP池实现方法
2017/01/05 Python
Python生成密码库功能示例
2017/05/23 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
销售自荐信
2013/10/22 职场文书
自荐信格式
2013/12/01 职场文书
大型活动组织方案
2014/05/10 职场文书
公民授权委托书
2014/10/15 职场文书
歌剧魅影观后感
2015/06/05 职场文书
网络研修心得体会
2016/01/08 职场文书
九年级英语教学反思
2016/02/15 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
Golang并发工具Singleflight
2022/05/06 Golang