python 線程隊列PriorityQueue(優先隊列)(37)

在 線程隊列Queue / 線程隊列LifoQueue 文章中分別介紹了先進先出隊列Queue和先進後出隊列LifoQueue,而今天給大家介紹的是最後一種:優先隊列PriorityQueue,對隊列中的數據按照優先級排序,那麼具體怎麼用呢?

 

一.隊列Queue分類:

1.線程隊列Queue — FIFO(先進先出隊列),即哪個數據先存入,取數據的時候先取哪個數據,同生活中的排隊買東西;

2.線程隊列LifoQueue — LIFO(先進後出隊列),即哪個數據最後存入的,取數據的時候先取,如同打檯球,先進洞的球最後取出,最後進洞的球最先拿出

3.線程隊列PriorityQueue — PriorityQueue(優先級隊列),即存入數據時候加入一個優先級,取數據的時候優先級最高的取出;

 

二.優先隊列PriorityQueue簡介

在數據存入的時候設置優先級,取數據的時候默認按照優先級最高的取出,注意:使用優先級存數據取數據,隊列中的數據必須是同一類型,舉個栗子:班級成績排名/身高排名……

值得注意的是:在將數據存入到優先隊列PriorityQueue時,設置的值越小,優先級越高;

 

三.優先隊列PriorityQueue函數介紹

函數不做過多介紹了,已經在 線程隊列Queue 有了詳細講解,兩者都屬於Queue,函數都一樣!

 

 

四.優先隊列PriorityQueue使用

按優先級:不管是數字、字母、列表、元組等(字典、集合沒測),使用優先級存數據取數據,隊列中的數據必須是同一類型,都是按照實際數據的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:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!

"""

 

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

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(優先隊列)

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章