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类的动态修改的实例方法
Mar 24 Python
python运行其他程序的实现方法
Jul 14 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
Python整数对象实现原理详解
Jul 01 Python
Django Rest framework频率原理与限制
Jul 26 Python
python+mysql实现个人论文管理系统
Oct 25 Python
python实现引用其他路径包里面的模块
Mar 09 Python
基于python实现破解滑动验证码过程解析
May 28 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
Jun 03 Python
python 用struct模块解决黏包问题
Nov 07 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
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
2011/05/24 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
学习jQuey中的return false
2015/12/18 Javascript
Boostrap基础教程之JavaScript插件篇
2016/09/08 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
文明餐桌活动方案
2014/02/11 职场文书
诚信考试倡议书
2014/04/15 职场文书
干部考核评语
2014/04/29 职场文书
个人自荐材料
2014/05/23 职场文书
关于诚信的活动方案
2014/08/18 职场文书
索赔员岗位职责
2015/02/15 职场文书
记者节感言
2015/08/03 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
浅谈golang 中time.After释放的问题
2021/05/05 Golang
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技