1. 程式人生 > >Python Queue模組詳解

Python Queue模組詳解

中,佇列是執行緒間最常用的交換資料的形式。Queue模組是提供佇列操作的模組,雖然簡單易用,但是不小心的話,還是會出現一些意外。

建立一個“佇列”物件
import Queue
q = Queue.Queue(maxsize = 10)
Queue.Queue類即是一個佇列的同步實現。佇列長度可為無限或者有限。可通過Queue的建構函式的可選引數maxsize來設定佇列長度。如果maxsize小於1就表示佇列長度無限。

將一個值放入佇列中
q.put(10)
呼叫佇列物件的put()方法在隊尾插入一個專案。put()有兩個引數,第一個item為必需的,為插入專案的值;第二個block為可選引數,預設為
1。如果隊列當前為空且block為1,put()方法就使呼叫執行緒暫停,直到空出一個數據單元。如果block為0,put方法將引發Full異常。

將一個值從佇列中取出
q.get()
呼叫佇列物件的get()方法從隊頭刪除並返回一個專案。可選引數為block,預設為True。如果佇列為空且block為True,get()就使呼叫執行緒暫停,直至有專案可用。如果佇列為空且block為False,佇列將引發Empty異常。

Python Queue模組有三種佇列及建構函式:
1、Python Queue模組的FIFO佇列先進先出。     class Queue.Queue(maxsize)
2、LIFO類似於堆,即先進後出。                         class Queue.LifoQueue(maxsize)
3、還有一種是優先順序佇列級別越低越先出來。    class Queue.PriorityQueue(maxsize)

此包中的常用方法(q = Queue.Queue()):
q.qsize() 返回佇列的大小
q.empty() 如果佇列為空,返回True,反之False
q.full() 如果佇列滿了,返回True,反之False
q.full 與 maxsize 大小對應
q.get([block[, timeout]]) 獲取佇列,timeout等待時間
q.get_nowait() 相當q.get(False)
非阻塞 q.put(item) 寫入佇列,timeout等待時間
q.put_nowait(item) 相當q.put(item, False)
q.task_done() 在完成一項工作之後,q.task_done() 函式向任務已經完成的佇列傳送一個訊號

q.join() 實際上意味著等到佇列為空,再執行別的操作

轉載自:https://blog.linuxeye.com/334.html