Queue 实现生产者消费者模型(实例讲解)


Posted in Python onNovember 13, 2017

Python中,队列是线程间最常用的交换数据的形式。

Python Queue模块有三种队列及构造函数:

1、Python Queue模块的FIFO队列先进先出。 class Queue.Queue(maxsize)

2、LIFO类似于堆,即先进后出。 class Queue.LifoQueue(maxsize)

3、还有一种是优先级队列级别越低越先出来。 class Queue.PriorityQueue(maxsize)

此包中的常用方法(q = Queue.Queue()):

q.qsize() 返回队列的大小

q.empty() 如果队列为空,返回True,反之False

q.full() 如果队列满了,返回True,反之False

q.full 与 maxsize 大小对应

q.get([block[, timeout]]) 获取队列,timeout等待时间

q.get_nowait() 相当q.get(False)

非阻塞 q.put(item) 写入队列,timeout等待时间

q.put_nowait(item) 相当q.put(item, False)

q.task_done() 在完成一项工作之后,q.task_done() 函数向任务已经完成的队列发送一个信号

q.join() 实际上意味着等到队列为空,再执行别的操作

# coding=utf-8

import Queue
import threading
import time


q = Queue.Queue(maxsize=10) # 创建一个队列对象,长度限制为10,maxsize小于1就代表无限制


def producer(name):
  count = 1
  while True:
    q.put(count) # 将值放入队列中 默认block为True,无数据时调用线程暂停,否则抛出异常
    print "%s 生产了包子 %d" % (name, count)
    count += 1
    time.sleep(0.5)


def consumer(name):
  while True:
    conut_con = q.get() # 从队列中取值 默认block为True,无数据时调用线程暂停,否则抛出异常
    print "%s 吃掉了包子 %d" % (name, conut_con)
    time.sleep(2)


pro = threading.Thread(target=producer, args=("德源",))
con = threading.Thread(target=consumer, args=("xu",))
con2 = threading.Thread(target=consumer, args=("sx",))

pro.start()
con.start()
con2.start() # 开启线程

以上这篇Queue 实现生产者消费者模型(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python字符转换
Sep 06 Python
python写的一个squid访问日志分析的小程序
Sep 17 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
Python语言的变量认识及操作方法
Feb 11 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
python3 深浅copy对比详解
Aug 12 Python
关于python3中setup.py小概念解析
Aug 22 Python
Python脚本去除文件的只读性操作
Mar 05 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
有关pycharm登录github时有的时候会报错connection reset的问题
Sep 15 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 Python
python图像常规操作
Nov 11 #Python
python中实现k-means聚类算法详解
Nov 11 #Python
Python编程之基于概率论的分类方法:朴素贝叶斯
Nov 11 #Python
Python内存管理方式和垃圾回收算法解析
Nov 11 #Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 #Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 #Python
python基础练习之几个简单的游戏
Nov 10 #Python
You might like
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
php预定义常量
2006/12/25 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
node.js中的fs.utimes方法使用说明
2014/12/15 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
python 写入csv乱码问题解决方法
2016/10/23 Python
python查看微信好友是否删除自己
2016/12/19 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
法学研究生自我鉴定范文
2013/12/04 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
大专会计自我鉴定
2014/02/06 职场文书
企业军训感想
2014/02/07 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
2014年部门工作总结
2014/11/12 职场文书
工作时间证明
2015/06/15 职场文书
保护环境建议书作文500字
2015/09/14 职场文书