如何理解Python3线程优先级队列Queue
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这期内容当中小编将会给大家带来有关如何理解Python3线程优先级队列Queue,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python 的 Queue 模块中提
千家信息网最后更新 2025年12月01日如何理解Python3线程优先级队列Queue
这期内容当中小编将会给大家带来有关如何理解Python3线程优先级队列Queue,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
| Python 的 Queue 模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列 PriorityQueue。 |
这些队列都实现了锁原语,能够在多线程中直接使用,可以使用队列来实现线程间的同步。
Queue 模块中的常用方法:
Queue.qsize() 返回队列的大小
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False
Queue.full 与 maxsize 大小对应
Queue.get([block[, timeout]])获取队列,timeout等待时间
Queue.get_nowait() 相当Queue.get(False)
Queue.put(item) 写入队列,timeout等待时间
Queue.put_nowait(item) 相当Queue.put(item, False)
Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号
Queue.join() 实际上意味着等到队列为空,再执行别的操作
实例:
#!/usr/bin/python3import queueimport threadingimport timeexitFlag = 0class myThread (threading.Thread): def __init__(self, threadID, name, q): threading.Thread.__init__(self) self.threadID = threadID self.name = name self.q = q def run(self): print ("开启线程:" + self.name) process_data(self.name, self.q) print ("退出线程:" + self.name)def process_data(threadName, q): while not exitFlag: queueLock.acquire() if not workQueue.empty(): data = q.get() queueLock.release() print ("%s processing %s" % (threadName, data)) else: queueLock.release() time.sleep(1)threadList = ["Thread-1", "Thread-2", "Thread-3"]nameList = ["One", "Two", "Three", "Four", "Five"]queueLock = threading.Lock()workQueue = queue.Queue(10)threads = []threadID = 1# 创建新线程for tName in threadList: thread = myThread(threadID, tName, workQueue) thread.start() threads.append(thread) threadID += 1# 填充队列queueLock.acquire()for word in nameList: workQueue.put(word)queueLock.release()# 等待队列清空while not workQueue.empty(): pass# 通知线程是时候退出exitFlag = 1# 等待所有线程完成for t in threads: t.join()print ("退出主线程")以上程序执行结果:
开启线程:Thread-1开启线程:Thread-2开启线程:Thread-3Thread-3 processing OneThread-1 processing TwoThread-2 processing ThreeThread-3 processing FourThread-1 processing Five退出线程:Thread-3退出线程:Thread-2退出线程:Thread-1退出主线程
上述就是小编为大家分享的如何理解Python3线程优先级队列Queue了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
线程
队列
优先级
内容
大小
时间
模块
先出
分析
同步
安全
专业
中小
任务
信号
内容丰富
函数
原语
实例
实际
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
你认为数据库是技术还是思维
网络技术服务费怎么写分录
计算机网络技术考试拓扑结构图
打好网络安全
公安局软件开发技术支持部门
软件开发资质公司
从江无线网络技术
csgo主界面进入完美服务器
软件开发团队是干什么的
SM软件开发资质什么意思
移动ntp服务器
博雅数据库二本投挡线四川理科
mysql 数据库建表
软件开发适合多大年龄段的人
网络安全专业适合的国企
苏州大宇宙软件开发实习生待遇
简述数据库系统的安全机制
wdcp怎么导入数据库
暗影之月 服务器
数据库搭建公司
罪恶都市怎么购买服务器
保护网络安全图片可爱
精灵盛典手游转服务器
瀚高数据库创建模式
html5抓取数据库
数据库索引优化的几个方面
浪潮服务器的默认管理口地址
找网络技术人员
三星相机服务器错误重启
win7客户端软件开发