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利用hook技术破解https的实例代码
Mar 25 Python
简单了解python模块概念
Jan 11 Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
详解python logging日志传输
Jul 01 Python
Python中bisect的用法及示例详解
Jul 20 Python
python logging 重复写日志问题解决办法详解
Aug 04 Python
python 调用js的四种方式
Apr 11 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
用PHP查询域名状态whois的类
2006/11/25 PHP
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
python3设计模式之简单工厂模式
2017/10/17 Python
python的文件操作方法汇总
2017/11/10 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
详解python中的闭包
2020/09/07 Python
Python如何执行系统命令
2020/09/23 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
浅谈react路由传参的几种方式
2021/03/23 Javascript
英文自荐信
2013/12/19 职场文书
学习新党章思想汇报
2014/01/09 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
感恩的心主题班会
2015/08/12 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
CSS的calc函数用法小结
2022/06/25 HTML / CSS