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 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
深入解析Python中的urllib2模块
Nov 13 Python
Python实现简易Web爬虫详解
Jan 03 Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
python3利用Socket实现通信的方法示例
May 06 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
使用python3 实现插入数据到mysql
Mar 02 Python
python能在浏览器能运行吗
Jun 17 Python
pandas提升计算效率的一些方法汇总
May 30 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 函数执行效率的小比较
2010/10/17 PHP
php的ajax框架xajax入门与试用介绍
2010/12/19 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
javascript背投广告代码的完善
2008/04/08 Javascript
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Python中针对函数处理的特殊方法
2014/03/06 Python
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python实现文字版扫雷
2020/04/24 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
《要下雨了》教学反思
2014/02/17 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
被告答辩状范文
2015/05/22 职场文书
公司处罚决定书
2015/06/24 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python