今天講一下佇列,用到乙個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 ...