python程序 线程队列queue使用方法解析


Posted in Python onSeptember 23, 2019

一、线程队列

queue队列:使用方法同进程的Queue一样

如果必须在多个线程之间安全地交换信息时,队列在线程编程中尤其有用。

重要:

q.put() :往队列里面放值,当参数block=Ture的时候,timeout参数将会有作用,当队列已经满了的时候,在往里面放值时,block为True程序将会等待timeout的时间,过了时间程序会报错,block如果为Flase时,程序不会等待直接报错

q.get() :从队列里面取值,当参数block=Ture的时候,timeout参数将会有作用,当队列已经空了的时候,在从里面取值时,block为True程序将会等待timeout的时间,过了时间程序会报错,block如果为Flase时,程序不会等待直接报错

q.task_done() :使用者使用此方法发出信号,表示q.get()返回的项目已经被处理。如果调用此方法的次数大于从队列中删除的项目数量,将引发ValueError异常。

q.join() :生产者将使用此方法进行阻塞,直到队列中所有项目均被处理。阻塞将持续到为队列中的每个项目均调用q.task_done()方法为止。

二、线程队列的取值方式

2.1 先进先出

class queue.Queue(maxsize=0)

q = queue.Queue() :不加参数代表队列可以无限的放数据

q = queue.Queue() #不加参数代表队列可以无限的放数据
q.put('Cecilia陈')
q.put('xichen')
print(q.get())
print(q.get())
'''
结果:
Cecilia陈
xichen
'''

2.2 后进先出

class queue.LifoQueue(maxsize=0)

q = Lifo.Queue() :不加参数代表队列可以无限的放数据

q = queue.LifoQueue() #不加参数代表队列可以无线的放数据
q.put('Cecilia陈')
q.put('xichen')

print(q.get())
print(q.get())
'''
结果:
xichen
Cecilia陈
'''

三、队列存数据时可以设置优先级

class queue.priorityQueue(maxsize=0)

q = queue.priorityQueue() :不加参数代表队列可以无限的放数据

3.1 优先级队列

# 3.优先级队列
q = queue.PriorityQueue() #不加参数代表队列可以无线的放数据
#put进入一个元组,元组的第一个元素是优先级(通常是数字,也可以是非数字之间的比较),数字越小优先级越高
q.put((2,'Cecilia陈'))
q.put((1,'xichen'))
q.put((5,'xuchen'))

print(q.get())
print(q.get())
print(q.get())
'''
# 结果(数字越小优先级越高,优先级高的优先出队):
结果:
(1, 'xichen')
(2, 'Cecilia陈')
(5, 'xuchen')
'''

3.2 方法说明

maxsize是一个整数,它设置可以放置在队列中的项数的上限。一旦达到此大小,插入将阻塞,直到使用队列项。如果maxsize小于或等于零,则队列大小为无穷大。

p.put() :放值的时候,放的是一个元组()

exception queue.Empty :异常队列。空:当对空的队列对象调用非阻塞 get() 或 get_nowait() 时引发异常,也就是说队列为空的时候,再取值就会报错

exception queue.Full :异常队列。Full:当对已满的队列对象调用非阻塞put() 或 put_nowait() 时引发异常。也就是说当队列已满的时候,再往里面当值的时候将会报错

Queue.qsize () :

empty() :如果为空,返回True

Queue.full() :如果已满,返回True

put_nowait(item) :等同于put(item, False)。

get_nowait() :等同于get(False)。

提供了两种方法来支持跟踪已加入队列的任务是否已被守护进程使用者线程完全处理:

task_done() :表示以前加入队列的任务已经完成。由队列使用者线程使用。对于用于获取任务的每个get(),后续对task_done()的调用告诉队列任务上的处理已经完成。如果join(当前处于阻塞状态,那么在处理完所有项之后,它将继续运行(这意味着对于已经放入队列()的每个项,都收到了task_done()调用)。

如果调用次数超过放置在队列中的项的次数,则引发ValueError。

Queue.join() :块直到队列被消费完毕。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python自动化测试之setUp与tearDown实例
Sep 28 Python
介绍Python中内置的itertools模块
Apr 29 Python
简单学习Python time模块
Apr 29 Python
Python3安装Pymongo详细步骤
May 26 Python
Python探索之爬取电商售卖信息代码示例
Oct 27 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
python3.6的venv模块使用详解
Aug 01 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
浅谈Python中(&,|)和(and,or)之间的区别
Aug 07 Python
Python谱减法语音降噪实例
Dec 18 Python
Python random模块制作简易的四位数验证码
Feb 01 Python
python程序 创建多线程过程详解
Sep 23 #Python
详解python播放音频的三种方法
Sep 23 #Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 #Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 #Python
Python3 pandas 操作列表实例详解
Sep 23 #Python
详解基于python-django框架的支付宝支付案例
Sep 23 #Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 #Python
You might like
基于php使用memcache存储session的详解
2013/06/25 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
PHP7修改的函数
2021/03/09 PHP
让您的菜单不离网站
2006/10/03 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
Python标准库defaultdict模块使用示例
2015/04/28 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
经典c++面试题二
2015/08/14 面试题
校运会入场式解说词
2014/02/10 职场文书
统计专业自荐书
2014/07/06 职场文书
顶岗实习协议书
2015/01/29 职场文书
幼儿园辞职书
2015/02/26 职场文书
培训计划通知
2015/07/15 职场文书
施工现场安全管理制度
2015/08/05 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers