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读取环境变量的方法和自定义类分享
Nov 22 Python
Python Sql数据库增删改查操作简单封装
Apr 18 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
Apr 20 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
python调用虹软2.0第三版的具体使用
Feb 22 Python
django自带调试服务器的使用详解
Aug 29 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
python实现快速文件格式批量转换的方法
Oct 16 Python
Python监听剪切板实现方法代码实例
Nov 11 Python
scrapy实践之翻页爬取的实现
Jan 05 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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Python验证码识别的方法
2015/07/10 Python
python中enumerate函数遍历元素用法分析
2016/03/11 Python
Python生成密码库功能示例
2017/05/23 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
汽车运用工程专业毕业生推荐信
2013/12/25 职场文书
银行委托书范本
2014/04/04 职场文书
婚前协议书范本
2014/04/15 职场文书
公司贷款承诺书
2014/05/30 职场文书
广播体操口号
2014/06/18 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
党员干部四风问题整改措施思想汇报
2014/10/12 职场文书
单位综合评价意见
2015/06/05 职场文书
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python