Python Queue模塊詳解

Python3.5中,隊列是線程間最經常使用的交換數據的形式。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模塊有三種隊列及構造函數:
一、Python queue模塊的FIFO隊列先進先出。     class queue.queue(maxsize)
二、LIFO相似於堆,即先進後出。                         class queue.Lifoqueue(maxsize)
三、還有一種是優先級隊列級別越低越先出來。    class queue.Priorityqueue(maxsize)get

此包中的經常使用方法(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() 實際上意味着等到隊列爲空,再執行別的操做同步

相關文章
相關標籤/搜索