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 Web框架Flask中使用百度云存储BCS实例
Feb 08 Python
Python返回真假值(True or False)小技巧
Apr 10 Python
Python实现统计英文单词个数及字符串分割代码
May 28 Python
Python做简单的字符串匹配详解
Mar 21 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
利用Python如何将数据写到CSV文件中
Jun 05 Python
python微信公众号之关键词自动回复
Jun 15 Python
Django中日期处理注意事项与自定义时间格式转换详解
Aug 06 Python
Python如何实现强制数据类型转换
Nov 22 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
详解python的super()的作用和原理
Oct 29 Python
python 如何引入协程和原理分析
Nov 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
NT IIS下用ODBC连接数据库
2006/10/09 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
Node.js事件驱动
2015/06/18 Javascript
举例详解Python中smtplib模块处理电子邮件的使用
2015/06/24 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
Python模拟三级菜单效果
2017/09/11 Python
Anaconda入门使用总结
2018/04/05 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
python中reload重载实例用法
2020/12/15 Python
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
教师四风自我剖析材料
2014/09/30 职场文书
民事和解协议书格式
2014/11/29 职场文书
小学教师党员承诺书
2015/04/27 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS