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

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

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

熱門標簽:手機網(wǎ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ù)結構中肯定也有后進先出的隊列。后進先出的隊列為: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)先級來處理任務,比如系統(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()

運行之后,效果如下:

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

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

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

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

巨人網(wǎng)絡通訊聲明:本文標題《Python數(shù)據(jù)結構之優(yōu)先級隊列queue用法詳解》,本文關鍵詞  Python,數(shù)據(jù)結構,之,優(yōu)先級,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python數(shù)據(jù)結構之優(yōu)先級隊列queue用法詳解》相關的同類信息!
  • 本頁收集關于Python數(shù)據(jù)結構之優(yōu)先級隊列queue用法詳解的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 利津县| 右玉县| 赣州市| 松阳县| 广丰县| 东乌珠穆沁旗| 将乐县| 肥城市| 沾化县| 连城县| 徐汇区| 绥棱县| 浦城县| 咸阳市| 司法| 贵德县| 远安县| 龙山县| 宁国市| 嘉兴市| 大关县| 靖西县| 湖州市| 乐东| 水富县| 大竹县| 中山市| 奇台县| 三台县| 华坪县| 田阳县| 九龙县| 浦江县| 华池县| 茌平县| 闸北区| 达孜县| 淳安县| 林芝县| 民勤县| 徐汇区|