Python多執行緒(3) Queue模組

2021-09-08 11:14:34 字數 1240 閱讀 1341

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...