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去掉字符串中重复字符的方法
Feb 27 Python
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
使用python实现个性化词云的方法
Jun 16 Python
python去除扩展名的实例讲解
Apr 23 Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 Python
python 内置函数汇总详解
Sep 16 Python
浅谈Python中os模块及shutil模块的常规操作
Apr 03 Python
matplotlib quiver箭图绘制案例
Apr 17 Python
Python闭包装饰器使用方法汇总
Jun 29 Python
django跳转页面传参的实现
Sep 17 Python
Python下opencv库的安装过程及问题汇总
Jun 11 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
php中读写文件与读写数据库的效率比较分享
2013/10/19 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
Jquery技巧(必须掌握)
2016/03/16 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Pandas标记删除重复记录的方法
2018/04/08 Python
Python实现购物车程序
2018/04/16 Python
numpy中的高维数组转置实例
2018/04/17 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
咖啡店自主创业商业计划书
2014/01/22 职场文书
消防安全宣传口号
2014/06/10 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
励志演讲稿500字
2014/08/21 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
民事和解协议书格式
2014/11/29 职场文书
加强党性修养心得体会
2016/01/21 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
python基础之文件操作
2021/10/24 Python