queue模組支援先進先出(fifo)佇列,支援多執行緒的訪問,包括乙個主要的型別(queue)和兩個異常類(exception classes)。
python 2 中的queue模組在python 3中更名為 queue。
queue物件的建立
可以通過例項化queue型別獲得佇列物件:
q = queue.queue(maxsize=0)
建立新的佇列,引數 maxsize 的含義是:
queue模組定義的異常類
queue.empty
如果佇列 q 是空的,此時又呼叫了 q.get(false),就會丟擲該異常。
queue.full
如果佇列q是滿的,而又呼叫了 q.put(x, false),就會丟擲該異常。
queue物件的方法
q.empty()
判斷佇列是否為空。
q.full()
判斷佇列是否已滿。
q.get(block=true, timeout=none)q.get_nowait()
引數 block 為 false 時,引數 timeout 沒有意義,因為執行緒不會阻塞:
block 為 true 時,結合超時 timeout 判斷當佇列空時,是一直阻塞程序,還是程序阻塞一段時間。
get_nowait()等於get(false),或者get(timeout=0)即不論佇列空否,都不阻塞等待。
例如:
try:
x = q.get_nowait()
except queue.empty:
print "no more items to process"
q.put(item, block=true, timeout=none)q.put_nowait(item)
向佇列中插入 item,如果佇列滿了,丟擲queue.full或執行緒阻塞等待。
q.qsize()
返回當前佇列中的元素個數。
q.join()
q.task_done()
Python多執行緒3 queue
queue模組實現了多生產者。多消費者佇列。在多執行緒環境下,該佇列能實現多個執行緒間安全的資訊交換。模組實現了3種型別的佇列,差別在於佇列中條目檢索的順序不同。在fifo佇列中。依照先進先出的順序檢索條目。在lifo佇列中,最後加入的條目最先檢索到 操作類似乙個棧 在優先順序佇列中,條目被儲存為有...
Python多執行緒(3) Queue模組
queue模組支援先進先出 fifo 佇列,支援多執行緒的訪問,包括乙個主要的型別 queue 和兩個異常類 exception classes python 2 中的queue模組在python 3中更名為 queue。queue物件的建立 可以通過例項化queue型別獲得佇列物件 1 q que...
Python多執行緒(3) Queue模組
queue模組支援先進先出 fifo 佇列,支援多執行緒的訪問,包括乙個主要的型別 queue 和兩個異常類 exception classes python 2 中的queue模組在python 3中更名為 queue。queue物件的建立 可以通過例項化queue型別獲得佇列物件 q queue...