python 工具類之Queue元件詳解用法

2022-09-27 08:12:14 字數 1693 閱讀 8738

目錄

佇列一直都是工程化開發中經常使用的資料型別,本篇文章主要介紹一下python queue的使用,會邊除錯**,邊說明方法內容。

python: 3.6.13

初始化單向佇列

放置一些資料

可以使用full()方法判斷佇列是否已經塞滿資料,可以通過qsize()方法檢視佇列內元素數量。

這時候我們從佇列取出資料,看先取到的是什麼。

現在佇列裡面只有程式設計客棧兩個數,我們再塞入3個數看一下。

這個時候我們繼續塞入第六個數會怎麼樣呢?

可以看到如果塞入超過佇列限定數量的元素,會阻塞住佇列。所以在一般的專案工程中,我們會分成兩個執行緒,程式設計客棧乙個消費資料,乙個塞入佇列資料。按照業務需求看是否需要限定佇列長度。

上面展示的是先進先出(fifo)的單項佇列,python的queue模組也提供先進後出(lifo)的佇列: lifoqueue,類似j**a的棧型別。

塞入資料後看取出的是在佇列的什麼位置。

可以看出從佇列取出的是隊尾資料。

按照自定的優先順序來對佇列資料自動排序:priorityqueue。

塞入資料後,全部取出,列印看一下順序是什麼樣的。

可以看出,書序是按照我們塞入資料的級別由小到大排序的。

雙向佇列,顧名思義就是可以從佇列兩端進行處理:deque。

初始化,並塞入3個資料。

從左側,也就是最前端塞入乙個元素。看下效果。

可以自定義塞入元素的位置。

取出隊尾的資料。

取出隊首元素。

import queue

# 單向佇列

q = queue.queue(5)

print(q.maxsize)

q.put(1程式設計客棧)

q.put(2)

q.put(3)

print(q.full())

print(q.qsize())

print(q.get())

q.put(4)

q.put(5)

q.put(6)

q.put(7)

printwww.cppcns.com(q.full())

print(q.qsize())

print(q.get())

# gdoklhzl先進後出佇列

q = queue.lifoqueue(5)

q.put(1)

q.put(2)

q.put(3)

print(q.get())

# 優先順序佇列

q = queue.priorityqueue(5)

q.put((5, "電"))

q.put((2, "雨"))

q.put((4, "雷"))

q.put((1, "風"))

while true:

print(q.get())

# 雙向佇列

q = queue.deque()

q.append(1)

q.append(2)

q.append(3)

q.appendleft(4)

q.insert(2, 5)

print(q.pop())

print(q.popleft())

在很多任務程化架構中,佇列資料型別是必不可少的。活學活用吧。哎,今年ti10,中國隊又無緣冠軍,明年加油吧。

如果本文對你有幫助,請點個贊支援一下吧。

C 之queue模板類

size 返回佇列中元素的個數 empty 如果佇列空則返回真 back 返回最後乙個元素引用即隊尾。front 返回第乙個元素引用即隊首。pop 刪除第乙個元素,即隊首元素。不返回 push 在末尾加入乙個元素,即放置在隊尾 不返回 注意 指標使用應該初始化,指標壓棧效率更高。include io...

python學習之佇列(Queue)

佇列模組是繼承multi producer,multi consumer queues。它經常被用作處理執行緒操作,比如要進行多執行緒之間通訊時。佇列有三種型別,這種不同體現在檢索順序上。這三種分別為fifo佇列 lifo佇列 它更像我們所說的棧 和優先順序佇列。fifo佇列是先進先出 lifo佇列...

Python程序通訊之Queue

前言 process之間有時需要通訊,作業系統提供了很多機制來實現程序間的通訊。本博文主要講解 程序間通訊的queue。python多程序中的multiprocessing python多程序中的fork python併發程式設計之程序池 我們可以使用multiprocessing模組的queue實...