您好,登錄后才能下訂單哦!
在?線程隊列Queue?/?線程隊列LifoQueue?文章中分別介紹了先進(jìn)先出隊列Queue和先進(jìn)后出隊列LifoQueue,而今天給大家介紹的是最后一種:優(yōu)先隊列PriorityQueue,對隊列中的數(shù)據(jù)按照優(yōu)先級排序,那么具體怎么用呢?
?
1.線程隊列Queue?— FIFO(先進(jìn)先出隊列),即哪個數(shù)據(jù)先存入,取數(shù)據(jù)的時候先取哪個數(shù)據(jù),同生活中的排隊買東西;
2.線程隊列LifoQueue?— LIFO(先進(jìn)后出隊列),即哪個數(shù)據(jù)最后存入的,取數(shù)據(jù)的時候先取,如同打臺球,先進(jìn)洞的球最后取出,最后進(jìn)洞的球最先拿出;
3.線程隊列PriorityQueue?— PriorityQueue(優(yōu)先級隊列),即存入數(shù)據(jù)時候加入一個優(yōu)先級,取數(shù)據(jù)的時候優(yōu)先級最高的取出;
?
在數(shù)據(jù)存入的時候設(shè)置優(yōu)先級,取數(shù)據(jù)的時候默認(rèn)按照優(yōu)先級最高的取出,注意:使用優(yōu)先級存數(shù)據(jù)取數(shù)據(jù),隊列中的數(shù)據(jù)必須是同一類型,舉個栗子:班級成績排名/身高排名……
值得注意的是:在將數(shù)據(jù)存入到優(yōu)先隊列PriorityQueue時,設(shè)置的值越小,優(yōu)先級越高;
?
函數(shù)不做過多介紹了,已經(jīng)在?線程隊列Queue?有了詳細(xì)講解,兩者都屬于Queue,函數(shù)都一樣!
?
?
按優(yōu)先級:不管是數(shù)字、字母、列表、元組等(字典、集合沒測),使用優(yōu)先級存數(shù)據(jù)取數(shù)據(jù),隊列中的數(shù)據(jù)必須是同一類型,都是按照實際數(shù)據(jù)的ascii碼表的順序進(jìn)行優(yōu)先級匹配,漢字是按照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:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! """ ? import queue import threading import time ? q = queue.PriorityQueue() q.put([1, 'ace']) q.put([40, 333]) q.put([3, 'afd']) q.put([5, '4asdg']) # 1是級別最高的, while not q.empty():??# 不為空時候執(zhí)行 ????print(q.get()) ? ? ? q = queue.PriorityQueue() q.put('我') q.put('你') q.put('他') q.put('她') q.put('ta') while not q.empty(): ????print(q.get()) |
輸出結(jié)果:
1 2 3 4 5 6 7 8 9 | [1, 'ace'] [3, 'afd'] [5, '4asdg'] [40, 333] ta 他 你 她 我 |
由此可見:在將數(shù)據(jù)存入到優(yōu)先隊列PriorityQueue時,設(shè)置的值越小,優(yōu)先級越高!
?
?
1.python線程隊列Queue-FIFO
2.python線程隊列LifoQueue
3.python線程互斥鎖Lock
4.python線程時間Event
?
轉(zhuǎn)載請注明:猿說Python???python線程隊列PriorityQueue(優(yōu)先隊列)
?
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。