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实现在每个独立进程中运行一个函数的方法
Apr 23 Python
python返回昨天日期的方法
May 13 Python
Python按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
浅析Python中的赋值和深浅拷贝
Aug 15 Python
Python装饰器用法实例总结
Feb 07 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
Oct 23 Python
Python3实现腾讯云OCR识别
Nov 27 Python
python如何实现视频转代码视频
Jun 17 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
python 如何做一个识别率百分百的OCR
May 29 Python
Python字典和列表性能之间的比较
Jun 07 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 $_ENV为空的原因分析
2009/06/01 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
node跨域请求方法小结
2017/08/25 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
python实现统计代码行数的方法
2015/05/22 Python
python字典键值对的添加和遍历方法
2016/09/11 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
python实现图片中文字分割效果
2019/07/22 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
2016/02/27 HTML / CSS
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
Python如何实现单例模式
2016/06/03 面试题
中软国际Java程序员机试题
2012/08/19 面试题
电子信息毕业生自荐信
2013/11/16 职场文书
总经理岗位职责范本
2015/04/01 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
队名及霸气口号大全
2015/12/25 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
python本地文件服务器实例教程
2021/05/02 Python