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 相关文章推荐
linux 下实现python多版本安装实践
Nov 18 Python
使用Python读写文本文件及编写简单的文本编辑器
Mar 11 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
Python paramiko模块的使用示例
Apr 11 Python
python直接获取API传递回来的参数方法
Dec 17 Python
python通过txt文件批量安装依赖包的实现步骤
Aug 13 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
pytorch实现查看当前学习率
Jun 24 Python
python在linux环境下安装skimage的示例代码
Oct 14 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 Python
解决jupyter notebook图片显示模糊和保存清晰图片的操作
Apr 24 Python
Python爬虫入门案例之爬取二手房源数据
Oct 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
咖啡的化学
2021/03/03 咖啡文化
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
nodeJS模块简单用法示例
2018/04/21 NodeJs
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
动态创建类实例代码
2009/10/07 Python
python实现的防DDoS脚本
2011/02/08 Python
Python实现的爬虫功能代码
2017/06/24 Python
用python与文件进行交互的方法
2018/03/01 Python
django框架自定义用户表操作示例
2018/08/07 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
如何用tempfile库创建python进程中的临时文件
2021/01/28 Python
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
单位刻章介绍信范文
2014/01/11 职场文书
装饰活动策划方案
2014/02/11 职场文书
爱护草坪标语
2014/06/24 职场文书
学生安全责任书模板
2014/07/25 职场文书
法人委托书的范本格式
2014/09/11 职场文书
师德师风整改措施
2014/10/24 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
平安家庭事迹材料
2014/12/20 职场文书