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实现多线程采集的2个代码例子
Jul 07 Python
python用户管理系统
Mar 13 Python
WxPython建立批量录入框窗口
Feb 27 Python
对python中的float除法和整除法的实例详解
Jul 20 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
Sep 25 Python
Python 实现将数组/矩阵转换成Image类
Jan 09 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
如何基于python实现不邻接植花
May 01 Python
使用pytorch 筛选出一定范围的值
Jun 28 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
使用BeautifulSoup4解析XML的方法小结
Dec 07 Python
python unichr函数知识点总结
Dec 16 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
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
javascript 常用方法总结
2009/06/03 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
JavaScript中判断原生函数检查function是否是原生代码
2014/09/09 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
jQuery实现背景弹性滚动的导航效果
2016/06/01 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
保安公司服务承诺书
2014/05/28 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
导游词之河北邯郸
2019/09/12 职场文书
导游词之无锡梅园
2019/11/28 职场文书
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL