目錄
佇列一直都是工程化開發中經常使用的資料型別,本篇文章主要介紹一下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實...