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装饰器使用方法实例
Nov 21 Python
通过C++学习Python
Jan 20 Python
python实现web方式logview的方法
Aug 10 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
Python docx库用法示例分析
Feb 16 Python
在Python中使用turtle绘制多个同心圆示例
Nov 23 Python
python 变量初始化空列表的例子
Nov 28 Python
使用Python内置模块与函数进行不同进制的数的转换
Apr 26 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 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信息函数
2015/10/21 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
javascript代码加载优化方法
2011/01/30 Javascript
一个挺有意思的Javascript小问题说明
2011/09/26 Javascript
jQuery实现跨域
2015/02/03 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
python通过yield实现数组全排列的方法
2015/03/18 Python
Flask框架配置与调试操作示例
2018/07/23 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
党校自我鉴定范文
2013/10/02 职场文书
大学生旅游业创业计划书
2014/01/29 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
单位病假条范文
2015/08/17 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang
python学习之panda数据分析核心支持库
2021/05/07 Python
Python常遇到的错误和异常
2021/11/02 Python
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python