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 相关文章推荐
Python3基础之函数用法
Aug 13 Python
RC4文件加密的python实现方法
Jun 30 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
Dec 14 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 Python
Python定时任务sched模块用法示例
Jul 16 Python
python实现括号匹配的思路详解
Aug 23 Python
python命令行工具Click快速掌握
Jul 04 Python
python文件处理fileinput使用方法详解
Jan 02 Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
Mar 23 Python
Python+kivy BoxLayout布局示例代码详解
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
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
php循环输出数据库内容的代码
2008/05/24 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
详解PHP中的PDO类
2015/07/06 PHP
php生成验证码函数
2015/10/20 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
jQuery load方法用法集锦
2011/12/06 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
python uuid模块使用实例
2015/04/08 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
Python对象的属性访问过程详解
2020/03/05 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
电大自我鉴定
2013/10/27 职场文书
个人党性剖析材料
2014/02/03 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
老人祝寿主持词
2014/03/28 职场文书
白银帝国观后感
2015/06/17 职场文书
新手初学Java网络编程
2021/07/07 Java/Android
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python