佇列queue包含三個類
1:queue(maxsize=0) 普通模式先進先出
2:lifoqueue(maxsize=0) 後進先出
3:priorityqueue(maxsize=0) 優先順序模式
queue.qsize() 返回當前佇列裡存在的個數
queue.empty() 返回佇列是否為空
queue.full() 返回佇列是否存滿
queue.put(item, block=true, timeout=none)
將item放入佇列中。
如果可選的引數block為true且timeout為空物件(預設的情況,阻塞呼叫,無超時)。
如果timeout是個正整數,阻塞呼叫程序最多timeout秒,如果一直無空空間可用,丟擲full異常(帶超時的阻塞呼叫)。
如果block為false,如果有空閒空間可用將資料放入佇列,否則立即丟擲full異常
queue.put_nowait()無阻塞版本,等同於block=false,timeout=none
queue.get(block=true, timeout=none) 取出資料,其他與put類似
queue()示例
import queue
q = queue.queue() #普通的(先進先出
q.put(1)
q.put(2)
q.put(3)
print(q.qsize()) #獲取當前存在的個數
print(q.get()) #取出 當超過的時候會報錯
print(q.get())
print(q.get())
結果:
1 2 3
lifoqueue()示例
import queue
q = queue.lifoqueue() #普通的(先進先出
q.put(1)
q.put(2)
q.put(3)
print(q.qsize()) #獲取當前存在的個數
print(q.get()) #取出 當超過的時候會報錯
print(q.get())
print(q.get())
結果:
3 2 1
priorityqueue()示例
按照一定的規律確定優先順序,例如數字越小優先順序越高,或者按字元排序,值得注意的是只能採用一種模式來確定,全為數字或是全為字元,兩者不能混在一起,不然會報錯。
import queue
q = queue.priorityqueue() #普通的(先進先出
q.put((2,'b'))
q.put((1,'a'))
q.put((3,'c'))
print(q.qsize()) #獲取當前存在的個數
print(q.get()) #取出 當超過的時候會報錯
print(q.get())
print(q.get())
結果:
(1, 'a')
(2, 'b')
(3, 'c')
簡單的生產者和消費者模型
import queue,threading,time
q = queue.queue()
def producer():
count = 0
while true:
q.put('switch %s' %count)
print('switch %s' %count)
count += 1
time.sleep(1)
def consumer():
while true:
if q.qsize() > 0 :
print('buy %s'%q.get())
time.sleep(2)
p = threading.thread(target=producer)
c = threading.thread(target=consumer)
p.start()
c.start()
結果:
生成了switch 0
購買了 switch 0
生成了switch 1
購買了 switch 1
生成了switch 2
生成了switch 3
購買了 switch 2
生成了switch 4
生成了switch 5
生成了switch 6
購買了 switch 3
生成了switch 7
購買了 switch 4
生成了switch 8
python有序佇列 Python 佇列
所謂佇列 佇列是有序集合,新增操作發生在 尾部 移除操作則發生在 頭部 新元素從尾部進入 佇列,然後一直向前移動到頭部,直到成為下乙個被移除的元素。新新增的元素必須在佇列的尾部等待,在佇列中時間長的元素則排在前面。這種排序 原則被稱作 fifo first in first out 即先進先出,也稱...
Python基礎9 程序和訊息佇列
程序 守護程序 訊息佇列 程序 程序中會有執行緒 主線程 cpu會排程執行緒,程序是為了分配資源 import multiprocessing,time def show for i in range 5 print show time.sleep 0.2 def info for i in ran...
python 清空佇列 python實現 佇列
佇列 佇列的乙個特性是 先進先出 first in first out,fifo python中,同樣可以使用列表來儲存佇列的資料。通過建立乙個佇列類,便可以方便的對佇列進行操作。主要有 入隊 in 出隊 out 清空佇列 empty 設定佇列大小 setsize 獲取隊尾位置 getend 等 p...