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中使用中文的方法
Feb 19 Python
python网络编程之数据传输UDP实例分析
May 20 Python
剖析Django中模版标签的解析与参数传递
Jul 21 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
在django模板中实现超链接配置
Aug 21 Python
python创建学生管理系统
Nov 22 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
Apr 07 Python
学会python自动收发邮件 代替你问候女友
May 20 Python
简单的Python人脸识别系统
Jul 14 Python
Python实现自动整理文件的脚本
Dec 17 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 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数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
Extjs入门之动态加载树代码
2010/04/09 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
JS高级运动实例分析
2016/12/20 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
python合并文本文件示例
2014/02/07 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
对python修改xml文件的节点值方法详解
2018/12/24 Python
成绩单公证书
2014/04/10 职场文书
平安工地建设方案
2014/05/06 职场文书
员工保密承诺书
2014/05/28 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
保险公司演讲稿
2014/09/02 职场文书
灵山大佛导游词
2015/02/04 职场文书
保送生自荐信
2015/03/06 职场文书
高中生军训感言
2015/08/01 职场文书
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python
使用python绘制横竖条形图
2022/04/21 Python
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python