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爬取NUS-WIDE数据库图片
Oct 05 Python
python登录并爬取淘宝信息代码示例
Dec 09 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
python画蝴蝶曲线图的实例
Nov 21 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 Python
Python爬取网页信息的示例
Sep 24 Python
用python对excel进行操作(读,写,修改)
Dec 25 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 Python
Python中for后接else的语法使用
May 18 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
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
python三元运算符实现方法
2013/12/17 Python
Python中暂存上传图片的方法
2015/02/18 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
Python实现字符串匹配算法代码示例
2017/12/05 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
python 爬取小说并下载的示例
2020/12/07 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
大学生求职工作的自我评价
2014/02/13 职场文书
《最大的“书”》教学反思
2014/02/14 职场文书
保险经纪人求职信
2014/03/11 职场文书
经典促销广告词大全
2014/03/19 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
公务员年度考核评语
2014/12/31 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
pytorch 实现在测试的时候启用dropout
2021/05/27 Python