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 05 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
python实现redis三种cas事务操作
Dec 19 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
Apr 02 Python
Python 判断奇数偶数的方法
Dec 20 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
python在回调函数中获取返回值的方法
Feb 22 Python
django的csrf实现过程详解
Jul 26 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
Jul 28 Python
python超时重新请求解决方案
Oct 21 Python
Django实现前台上传并显示图片功能
May 29 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/04 无线电
PHP4实际应用经验篇(7)
2006/10/09 PHP
简单的php文件上传(实例)
2013/10/27 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
PHP之autoload运行机制实例分析
2014/08/28 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
基于PHP实现通过照片获取ip地址
2016/04/26 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
使用Python解析JSON数据的基本方法
2015/10/15 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
python基于phantomjs实现导入图片
2016/05/13 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
什么是Python包的循环导入
2020/09/08 Python
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
智能钱包:Ekster
2019/11/21 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
Java的基础面试题附答案
2016/01/10 面试题
金融系毕业生自荐书
2014/07/08 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书