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中使用HTMLParser解析html实例
Feb 08 Python
Python常用随机数与随机字符串方法实例
Apr 09 Python
python中异常捕获方法详解
Mar 03 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
Jun 14 Python
Python网络爬虫与信息提取(实例讲解)
Aug 29 Python
python3连接MySQL数据库实例详解
May 24 Python
flask应用部署到服务器的方法
Jul 12 Python
用Python去除图像的黑色或白色背景实例
Dec 12 Python
Django后台管理系统的图文使用教学
Jan 20 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
Jun 10 Python
python geopandas读取、创建shapefile文件的方法
Jun 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
php导出CSV抽象类实例
2014/09/24 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
2014/10/30 PHP
php实现cookie加密的方法
2015/03/10 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
jQuery手机拨号界面特效代码分享
2015/08/27 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
Python实现的Excel文件读写类
2015/07/30 Python
Python自动发邮件脚本
2017/03/31 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
Python实现的质因式分解算法示例
2018/05/03 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
英语自荐信范文
2013/12/11 职场文书
经典安踏广告词
2014/03/21 职场文书
少儿节目主持串词
2014/04/02 职场文书
公司承诺书怎么写
2014/05/24 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
离婚案件原告代理词
2015/05/23 职场文书
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库