Python佇列的三種佇列實現方法

2021-10-25 18:41:54 字數 2439 閱讀 1377

今天講一下佇列,用到乙個python自帶的庫,queue

佇列的三種實現方法有:

1、fifo先入先出佇列(queue)

2、lifo**先出佇列(lifoqueue)

3、優先順序佇列(priorityqueue)

先講一下queue中的幾個方法

# 三種 fifo  lifo priority

# 建立先入先出的佇列

# q = queue.queue()

# q.qsize() # 返回當前佇列包含的訊息數量

# q.empty() # 如果隊列為空返回true 反之false

# q.full() # 如果佇列滿了,返回true 反之false

# q.get() # 獲取佇列,timeout等待時間 get(self, block=true,timeout=none) block表示是否等待 timeout表示等待多久

# q.put(item) # 寫入佇列 put(self, item, block=true,timeout=none) block表示是否等待 timeout表示等待多久

# q.get_nowait() # 相當於q.get(false) 獲取不等待

# q.put_nowait() # 相當於 q.put(item,false) 寫入不等待

# q.task_done() # 在完成一項工作之後,使用這個方法可以向佇列傳送乙個訊號,表示該任務執行完畢

# q.join() # 等待佇列中所有任務(資料)執行完畢之後再往下執行,否則一直等待

# 注意點 :join是判斷的依據。不單單指的是佇列中沒有資料,資料get出去之後,要使用task_done向佇列傳送乙個訊號,表示該任務執行完畢

# /資料使用完畢

在下面我們用**來解釋

queue:先入先出佇列

import queue

q1 = queue.queue(3) # 定義3 指定佇列長度 表示只能塞3條資料 不寫可以無限塞

q1.put(1) # 等待插入

q1.put(11)

q1.put(33)

# q1.put(33,block=false) # 不等待插入 滿了之後報錯

# q1.put_nowait(33) # 不等待插入 滿了之後報錯

print(q1.get())

print(q1.get()) # 先入先出獲取 1先出 33最後出

print(q1.get())

# print(q1.get(block=false)) # 不等待獲取 隊列為空報錯

# print(q1.get_nowait()) # 不等待獲取 隊列為空報錯

# q1.put(3)

print(q1.qsize()) # 獲取佇列中的任務數/訊息數

print(q1.full()) # 判斷佇列是否已滿

print(q1.empty()) # 判斷佇列是否為空

q1.task_done()

q1.task_done()

q1.task_done() # 插入一條資料使用完成之後就要傳送一條訊息

q1.join() # 收到task_done返回的訊號,當都使用完成之後才會繼續往下執行 如果任務沒有完成那將不會向下執行

print('join之後')

lifoqueue:**先出佇列

import queue

q = queue.lifoqueue(3)

q.put(1)

q.put(2)

q.put(3)

print(q.get())

print(q.get())

print(q.get()) # 後進先出 其他方法與fifo相同

priorityqueue:優先順序佇列

import queue

q = queue.priorityqueue(3) # 其他方法與 fifo 相同

q.put((1, '哈哈1')) # 接受元組為引數 第乙個是優先順序數字型的 第二個是資料

q.put((88, '哈哈88'))

q.put((3, '哈哈3'))

print(q.get())

print(q.get())

print(q.get()) # 根據前面的優先順序出,優先順序數字小的先出

看完點贊 ~養成好習慣,以上內容希望對你有幫助,如果對軟體測試、介面測試、自動化測試、面試經驗交流感興趣可以加入我們。642830685,免費領取最新軟體測試大廠面試資料和python自動化、介面、框架搭建學習資料!技術大牛解惑答疑,同行一起交流。

資料結構 佇列的三種實現方式

佇列是一種只在一端插入 隊尾 另一端刪除 隊首 的有序線性表,佇列中第乙個插入的元素也是第乙個被刪除的元素,所以,佇列是一種先進先出 fifo 線性表。1 主要操作 2 輔助操作 1 基於簡單迴圈陣列的實現 package datastructure public class arrayqueue ...

python 清空佇列 python實現 佇列

佇列 佇列的乙個特性是 先進先出 first in first out,fifo python中,同樣可以使用列表來儲存佇列的資料。通過建立乙個佇列類,便可以方便的對佇列進行操作。主要有 入隊 in 出隊 out 清空佇列 empty 設定佇列大小 setsize 獲取隊尾位置 getend 等 p...

佇列的一種實現 迴圈佇列

佇列的一種實現,迴圈佇列,通過使用固定長度陣列及首尾指標實現佇列的入隊 出隊等 class circularqueue 元素入隊,成功則返回true,否則false param value return public boolean put t value if isempty true tail ...