亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python數據結構之優(yōu)先級隊列queue用法詳解

 更新時間:2021年05月27日 14:44:10   作者:李元靜  
queue庫提供了一個適用于多線程編程的先進先出(FIFO)數據結構,可以用來在生產者與消費者線程之間安全地傳遞消息或其他數據,它會為調用者處理鎖定,使多個線程可以安全而更容易地處理同一個Queue實例.Queue的大小可能受限,以限制內存使用或處理,需要的朋友可以參考下

一、基本用法

Queue類實現了一個基本的先進先出容器。使用put()將元素增加到這個序列的一端,使用get()從另一端刪除。具體代碼如下所示:

import queue

q = queue.Queue()

for i in range(1, 10):
    q.put(i)
while not q.empty():
    print(q.get(), end="  ")

運行之后,效果如下:

基本用法

這里我們依次添加1到10到隊列中,因為先進先出,所以出來的順序也與添加的順序相同。

二、LIFO隊列

既然有先進先出隊列queue,那么數據結構中肯定也有后進先出的隊列。后進先出的隊列為:LifoQueue,示例如下:

import queue

q = queue.LifoQueue()

for i in range(1, 10):
    q.put(i)
while not q.empty():
    print(q.get(), end="  ")

運行之后,效果如下:

后進先出

三、優(yōu)先隊列

在操作系統(tǒng)中,我們常常會根據優(yōu)先級來處理任務,比如系統(tǒng)的優(yōu)先級最高,我們肯定優(yōu)先處理系統(tǒng)任務,然后才處理用戶的任務。同樣,queue庫給我們提供了PriorityQueue來處理優(yōu)先級的隊列。

示例如下:

import queue
import threading


class Job:
    def __init__(self, priority, desc):
        self.priority = priority
        self.desc = desc
        print("New Job:", desc)
        return

    def __eq__(self, other):
        try:
            return self.priority == other.priority
        except AttributeError:
            return NotImplemented

    def __lt__(self, other):
        try:
            return self.priority > other.priority
        except AttributeError:
            return NotImplemented


def process_Job(q):
    while True:
        next_job = q.get()
        print(next_job.desc)
        q.task_done()


q = queue.PriorityQueue()

q.put(Job(5, "Five Job"))
q.put(Job(15, "Fifteen Job"))
q.put(Job(1, "One Job"))

workers = [
    threading.Thread(target=process_Job, args=(q,)),
    threading.Thread(target=process_Job, args=(q,)),
]

for work in workers:
    work.setDaemon(True)
    work.start()

q.join()

運行之后,效果如下:

優(yōu)先級

這里,我們默認數值越大優(yōu)先級越高,可以看到15先執(zhí)行,然后再是5,1任務。這個例子展現了有多個線程在處理任務時,要根據get()時隊列中元素的優(yōu)先級來處理。

到此這篇關于Python數據結構之優(yōu)先級隊列queue用法詳解的文章就介紹到這了,更多相關Python隊列queue 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python登錄豆瓣并發(fā)帖的方法

    python登錄豆瓣并發(fā)帖的方法

    這篇文章主要介紹了python登錄豆瓣并發(fā)帖的方法,涉及URL模擬登陸及cookie的相關使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 使用Python點云生成3D網格

    使用Python點云生成3D網格

    本文主要介紹了使用Python點云生成3D網格,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • python實現PDF中表格轉化為Excel的方法

    python實現PDF中表格轉化為Excel的方法

    這篇文章主要為大家詳細介紹了python實現PDF中表格轉化為Excel的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Python3.x中自定義比較函數

    Python3.x中自定義比較函數

    這篇文章主要介紹了Python3.x中自定義比較函數,本文給出了自定義對象的比較、字典值value的比較實現方法,需要的朋友可以參考下
    2015-04-04
  • 使用Python實現圖像標記點的坐標輸出功能

    使用Python實現圖像標記點的坐標輸出功能

    這篇文章主要介紹了使用Python實現圖像標記點的坐標輸出功能,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-08-08
  • python數據結構樹和二叉樹簡介

    python數據結構樹和二叉樹簡介

    這篇文章主要介紹了python數據結構樹和二叉樹簡介,需要的朋友可以參考下
    2014-04-04
  • Python3 獲取一大段文本之間兩個關鍵字之間的內容方法

    Python3 獲取一大段文本之間兩個關鍵字之間的內容方法

    今天小編就為大家分享一篇Python3 獲取一大段文本之間兩個關鍵字之間的內容方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python實現輕松找出文本文件中的高頻單詞

    Python實現輕松找出文本文件中的高頻單詞

    當想要深入了解一段文本,最常見的需求之一就是找到其中出現頻率最高的單詞,下面小編就來為大家詳細介紹一下如何使用Python實現輕松找出文本文件中的高頻單詞,需要的可以參考下
    2023-11-11
  • Python 的 __str__ 和 __repr__ 方法對比

    Python 的 __str__ 和 __repr__ 方法對比

    這篇文章主要介紹了Python 的 __str__ 和 __repr__ 方法的相關資料,幫助大家區(qū)分__str__ 和 __repr__ ,感興趣的朋友可以了解下
    2020-09-09
  • Python利用PyPDF2庫實現輕松提取PDF文本

    Python利用PyPDF2庫實現輕松提取PDF文本

    ython中的PyPDF2庫是一個非常有用的工具,無論您是需要分析PDF文檔中的內容還是需要在文檔中搜索特定的信息,PyPDF2都可以幫助您輕松實現這些任務,下面我們就來學習一下如何利用PyPDF2提取PDF文本吧
    2023-09-09

最新評論