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删除文件示例分享
Jan 28 Python
python实现的二叉树算法和kmp算法实例
Apr 25 Python
python判断windows系统是32位还是64位的方法
May 11 Python
python实现文件路径和url相互转换的方法
Jul 06 Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 Python
Python通过OpenCV的findContours获取轮廓并切割实例
Jan 05 Python
python虚拟环境迁移方法
Jan 03 Python
Python通用函数实现数组计算的方法
Jun 13 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
Python sqlite3查询操作过程解析
Feb 20 Python
Python colormap库的安装和使用详情
Oct 06 Python
利用Python如何画一颗心、小人发射爱心
Feb 21 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加MYSQL服务器
2006/10/09 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
js实现select下拉框选择
2020/01/11 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
python计算文本文件行数的方法
2015/07/06 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
利用python循环创建多个文件的方法
2018/10/25 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
django教程如何自学
2020/07/31 Python
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
教师新年寄语
2014/04/03 职场文书
食品安全责任书
2014/04/15 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
实习单位证明范例
2014/11/17 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫