婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python數據結構之優先級隊列queue用法詳解

Python數據結構之優先級隊列queue用法詳解

熱門標簽:手機網頁嵌入地圖標注位置 電銷機器人的風險 地圖標注線上如何操作 應電話機器人打電話違法嗎 天津電話機器人公司 開封自動外呼系統怎么收費 河北防封卡電銷卡 開封語音外呼系統代理商 400電話辦理哪種

一、基本用法

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="  ")

運行之后,效果如下:

三、優先隊列

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

示例如下:

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()

運行之后,效果如下:

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

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

您可能感興趣的文章:
  • Python 數據結構之樹的概念詳解
  • python三種數據結構及13種創建方法總結
  • python數據結構的排序算法
  • Python內置數據結構列表與元組示例詳解
  • Python二進制數據結構Struct的具體使用
  • python用sqlacodegen根據已有數據庫(表)結構生成對應SQLAlchemy模型
  • Python數據結構之圖的存儲結構詳解
  • Python數據結構之二叉排序樹的定義、查找、插入、構造、刪除
  • 詳解python數據結構之棧stack
  • Python數據結構詳細

標簽:常州 江蘇 六盤水 成都 駐馬店 山東 宿遷 蘭州

巨人網絡通訊聲明:本文標題《Python數據結構之優先級隊列queue用法詳解》,本文關鍵詞  Python,數據結構,之,優先級,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python數據結構之優先級隊列queue用法詳解》相關的同類信息!
  • 本頁收集關于Python數據結構之優先級隊列queue用法詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 芦溪县| 甘德县| 泽州县| 锡林郭勒盟| 道孚县| 伊通| 利辛县| 江西省| 巍山| 南漳县| 顺昌县| 牡丹江市| 菏泽市| 永仁县| 长丰县| 新闻| 北海市| 汉源县| 唐山市| 昌图县| 望奎县| 新建县| 昆山市| 张北县| 丰县| 囊谦县| 利辛县| 江孜县| 镇安县| 甘南县| 柞水县| 英超| 明水县| 望奎县| 萍乡市| 和平县| 清丰县| 平舆县| 辉县市| 江都市| 嘉定区|