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生成器(Generator)详解
Apr 13 Python
Python中生成器和yield语句的用法详解
Apr 17 Python
Python实现二叉搜索树
Feb 03 Python
Python元组知识点总结
Feb 18 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
Python利用matplotlib做图中图及次坐标轴的实例
Jul 08 Python
Python实现多线程/多进程的TCP服务器
Sep 03 Python
pytorch ImageFolder的覆写实例
Feb 20 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
Python列表去重复项的N种方法(实例代码)
May 12 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
Python图像处理二值化方法实例汇总
Jul 24 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和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
php中的观察者模式简单实例
2015/01/20 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
对angularJs中$sce服务安全显示html文本的实例
2018/09/30 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
python笔记(2)
2012/10/24 Python
Python实现的栈(Stack)
2018/01/26 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
两道JAVA笔试题
2016/09/14 面试题
造价工程师个人求职信
2013/09/21 职场文书
大学毕业生简单自荐信
2013/11/05 职场文书
企业宗旨标语
2014/06/10 职场文书
十佳青年事迹材料
2014/08/21 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
大学生团员个人总结
2015/02/14 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL