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 字符串split的用法分享
Mar 23 Python
python实现挑选出来100以内的质数
Mar 24 Python
使用wxPython获取系统剪贴板中的数据的教程
May 06 Python
使用python检测主机存活端口及检查存活主机
Oct 12 Python
Python中的连接符(+、+=)示例详解
Jan 13 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
用python打印1~20的整数实例讲解
Jul 01 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
Jul 03 Python
Python编写memcached启动脚本代码实例
Aug 14 Python
如何用用Python将地址标记在地图上
Feb 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
德生PL550的电路分析
2021/03/02 无线电
PHP 字符串分割和比较
2009/10/06 PHP
一个简洁的PHP可逆加密函数(分享)
2013/06/06 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
2018/09/16 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
python分割和拼接字符串
2013/11/01 Python
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
Python 远程开关机的方法
2020/11/18 Python
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
教师师德反思材料
2014/02/15 职场文书
给学校建议书范文
2014/05/13 职场文书
运动会口号大全
2014/06/07 职场文书
总经理助理岗位职责范本
2014/07/20 职场文书
保险公司演讲稿
2014/09/02 职场文书
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
现场施工员岗位职责
2015/04/11 职场文书
植树节新闻稿
2015/07/17 职场文书