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 pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
Python计算三维矢量幅度的方法
Jun 15 Python
理解生产者消费者模型及在Python编程中的运用实例
Jun 26 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 Python
python版学生管理系统
Jan 10 Python
Python子类继承父类构造函数详解
Feb 19 Python
简单了解python的内存管理机制
Jul 08 Python
python 判断三个数字中的最大值实例代码
Jul 24 Python
Python中filter与lambda的结合使用详解
Dec 24 Python
Python3基于print打印带颜色字符串
Jul 06 Python
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
Apr 12 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实现QQ登录实例代码
2016/01/14 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
js+css实现打字效果
2020/06/24 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
详解Python中的__init__和__new__
2014/03/12 Python
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
python 多进程队列数据处理详解
2019/12/23 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
东方电视购物:东方CJ
2016/10/12 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
一组SQL面试题
2016/02/15 面试题
校三好学生主要事迹
2014/01/11 职场文书
先进集体获奖感言
2014/02/13 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
vue打包时去掉所有的console.log
2022/04/10 Vue.js
java实现面板之间切换功能
2022/06/10 Java/Android