在 線程隊列Queue / 線程隊列LifoQueue 文章中分別介紹了先進先出隊列Queue和先進后出隊列LifoQueue,而今天給大家介紹的是最后一種:優先隊列PriorityQueue,對隊列中的數據按照優先級排序,那么具體怎么用呢?
一.隊列Queue分類:
1.線程隊列Queue — FIFO(先進先出隊列),即哪個數據先存入,取數據的時候先取哪個數據,同生活中的排隊買東西;
2.線程隊列LifoQueue — LIFO(先進后出隊列),即哪個數據最后存入的,取數據的時候先取,同生活中手槍的彈夾,子彈最后放入的先打出;
3.線程隊列PriorityQueue — PriorityQueue(優先級隊列),即存入數據時候加入一個優先級,取數據的時候優先級最高的取出;
二.優先隊列PriorityQueue簡介
在數據存入的時候設置優先級,取數據的時候默認按照優先級最高的取出,注意:使用優先級存數據取數據,隊列中的數據必須是同一類型,舉個栗子:班級成績排名/身高排名……
值得注意的是:在將數據存入到優先隊列PriorityQueue時,設置的值越小,優先級越高;
三.優先隊列PriorityQueue函數介紹
函數不做過多介紹了,已經在 線程隊列Queue 有了詳細講解,兩者都屬於Queue,函數都一樣!
四.優先隊列PriorityQueue使用
按優先級:不管是數字、字母、列表、元組等(字典、集合沒測),使用優先級存數據取數據,隊列中的數據必須是同一類型,都是按照實際數據的ascii碼表的順序進行優先級匹配,漢字是按照unicode表。
# !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(): # 不為空時候執行 print(q.get()) q = queue.PriorityQueue() q.put('我') q.put('你') q.put('他') q.put('她') q.put('ta') while not q.empty(): print(q.get())
輸出結果:
[1, 'ace'] [3, 'afd'] [5, '4asdg'] [40, 333] ta 他 你 她 我
由此可見:在將數據存入到優先隊列PriorityQueue時,設置的值越小,優先級越高!
猜你喜歡:
轉載請注明:猿說Python » python線程隊列PriorityQueue(優先隊列)
