濮阳杆衣贸易有限公司

主頁 > 知識庫 > Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級隊列queue用法詳解

Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級隊列queue用法詳解

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

一、基本用法

Queue類實現(xiàn)了一個基本的先進先出容器。使用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,那么數(shù)據(jù)結(jié)構(gòu)中肯定也有后進先出的隊列。后進先出的隊列為: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)中,我們常常會根據(jù)優(yōu)先級來處理任務(wù),比如系統(tǒng)的優(yōu)先級最高,我們肯定優(yōu)先處理系統(tǒng)任務(wù),然后才處理用戶的任務(wù)。同樣,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()

運行之后,效果如下:

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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級隊列queue用法詳解》,本文關(guān)鍵詞  Python,數(shù)據(jù)結(jié)構(gòu),之,優(yōu)先級,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級隊列queue用法詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級隊列queue用法詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    渑池县| 咸丰县| 体育| 浦北县| 武平县| 闽清县| 宜都市| 灵璧县| 昌吉市| 浑源县| 安陆市| 油尖旺区| 宁安市| 连州市| 永吉县| 新源县| 灵宝市| 郑州市| 文安县| 丰顺县| 怀宁县| 襄城县| 调兵山市| 登封市| 报价| 宁陵县| 广安市| 无棣县| 株洲市| 金坛市| 巴林右旗| 梅州市| 萝北县| 浏阳市| 湛江市| 宜宾县| 张掖市| 视频| 南漳县| 台山市| 甘德县|