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 相关文章推荐
wxpython 学习笔记 第一天
Feb 09 Python
Python浅拷贝与深拷贝用法实例
May 09 Python
使用Python中的tkinter模块作图的方法
Feb 07 Python
用Python设计一个经典小游戏
May 15 Python
python实现简单的单变量线性回归方法
Nov 08 Python
Python骚操作之动态定义函数
Mar 26 Python
python for循环remove同一个list过程解析
Aug 14 Python
python对Excel按条件进行内容补充(推荐)
Nov 24 Python
Python3爬虫中Ajax的用法
Jul 10 Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 Python
python如何快速拼接字符串
Oct 28 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
Nov 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
memcache命令启动参数中文解释
2014/01/13 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
php 问卷调查结果统计
2015/10/08 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
解决node-sass偶尔安装失败的方法小结
2018/12/05 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
Python求解平方根的方法
2015/03/11 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
python使用folium库绘制地图点击框
2018/09/21 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
Python LMDB库的使用示例
2021/02/14 Python
ETO男装官方网店:ETO Jeans
2019/02/28 全球购物
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
会计自我鉴定
2013/11/02 职场文书
初中化学教学反思
2014/01/23 职场文书
银行开业庆典方案
2014/02/06 职场文书
美术指导求职信
2014/03/17 职场文书
电子商务求职信
2014/06/15 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
管辖权异议上诉状
2015/05/23 职场文书
晚会开场白和结束语
2015/05/29 职场文书