扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在 线程队列Queue / 线程队列LifoQueue 文章中分别介绍了先进先出队列Queue和先进后出队列LifoQueue,而今天给大家介绍的是最后一种:优先队列PriorityQueue,对队列中的数据按照优先级排序,那么具体怎么用呢?
创新互联是一家集网站建设,鼓楼企业网站建设,鼓楼品牌网站建设,网站定制,鼓楼网站建设报价,网络营销,网络优化,鼓楼网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
1.线程队列Queue — FIFO(先进先出队列),即哪个数据先存入,取数据的时候先取哪个数据,同生活中的排队买东西;
2.线程队列LifoQueue — LIFO(先进后出队列),即哪个数据最后存入的,取数据的时候先取,如同打台球,先进洞的球最后取出,最后进洞的球最先拿出;
3.线程队列PriorityQueue — PriorityQueue(优先级队列),即存入数据时候加入一个优先级,取数据的时候优先级最高的取出;
在数据存入的时候设置优先级,取数据的时候默认按照优先级最高的取出,注意:使用优先级存数据取数据,队列中的数据必须是同一类型,举个栗子:班级成绩排名/身高排名……
值得注意的是:在将数据存入到优先队列PriorityQueue时,设置的值越小,优先级越高;
函数不做过多介绍了,已经在 线程队列Queue 有了详细讲解,两者都属于Queue,函数都一样!
按优先级:不管是数字、字母、列表、元组等(字典、集合没测),使用优先级存数据取数据,队列中的数据必须是同一类型,都是按照实际数据的ascii码表的顺序进行优先级匹配,汉字是按照unicode表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解忧 @Blog(个人博客地址): shuopython.com @WeChat Official Account(微信公众号):猿说python @Github:www.github.com
@File:python_priorityqueue.py @Time:2019/11/29 1queue5:25
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累! """
importqueue importthreading importtime
q=queue.PriorityQueue() q.put([1,'ace']) q.put([40,333]) q.put([3,'afd']) q.put([5,'4asdg']) # 1是级别最高的, whilenotq.empty(): # 不为空时候执行 print(q.get())
q=queue.PriorityQueue() q.put('我') q.put('你') q.put('他') q.put('她') q.put('ta') whilenotq.empty(): print(q.get()) |
输出结果:
1 2 3 4 5 6 7 8 9 | [1,'ace'] [3,'afd'] [5,'4asdg'] [40,333] ta 他 你 她 我 |
由此可见:在将数据存入到优先队列PriorityQueue时,设置的值越小,优先级越高!
1.python线程队列Queue-FIFO
2.python线程队列LifoQueue
3.python线程互斥锁Lock
4.python线程时间Event
转载请注明:猿说Python » python线程队列PriorityQueue(优先队列)
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流