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入门篇之字符串
Oct 17 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
Python3.遍历某文件夹提取特定文件名的实例
Apr 26 Python
python向已存在的excel中新增表,不覆盖原数据的实例
May 02 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
Django ImageFiled上传照片并显示的方法
Jul 28 Python
Python 中由 yield 实现异步操作
May 04 Python
基于python纯函数实现井字棋游戏
May 27 Python
python中pathlib模块的基本用法与总结
Aug 17 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
Python虚拟环境virtualenv是如何使用的
Jun 20 Python
Python 中面向接口编程
May 20 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
Banner程序
2006/10/09 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
php中定时计划任务的实现原理
2013/01/08 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
PHP实现的二分查找算法实例分析
2017/12/19 PHP
js tab效果的实现代码
2009/12/26 Javascript
Js组件的一些写法
2010/09/10 Javascript
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
Python列表切片用法示例
2017/04/19 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
python使用folium库绘制地图点击框
2018/09/21 Python
python可视化text()函数使用详解
2020/02/11 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
计算机专业自我鉴定
2013/10/15 职场文书
火锅店营销方案
2014/02/26 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
python前后端自定义分页器
2022/04/13 Python