在Python中,queue
模塊提供了實現FIFO(先進先出)隊列的類Queue
和deque
,以及實現優先級隊列的類PriorityQueue
。下面是queue
模塊中常用的幾種函數的使用方法:
import queue
q = queue.Queue() # 創建一個FIFO隊列
q = queue.LifoQueue() # 創建一個LIFO隊列
q = queue.PriorityQueue() # 創建一個優先級隊列
q.put(item) # 將元素item放入隊列中
item = q.get() # 從隊列中獲取元素,并將其從隊列中移除
empty = q.empty() # 返回True,如果隊列為空;否則返回False
size = q.qsize() # 返回隊列中元素的數量
import queue
import threading
def worker(q):
while not q.empty(): # 如果隊列不為空
item = q.get() # 從隊列中獲取元素
# 進行相應的處理操作
print(item)
q = queue.Queue()
# 向隊列中添加元素
for i in range(10):
q.put(i)
# 創建多個線程,每個線程從隊列中獲取元素并進行處理
threads = []
for _ in range(5):
t = threading.Thread(target=worker, args=(q,))
t.start()
threads.append(t)
# 等待所有線程執行完畢
for t in threads:
t.join()
上述代碼創建了一個隊列,并向隊列中添加了10個元素。然后創建了5個線程,每個線程從隊列中獲取元素并進行處理。最后,等待所有線程執行完畢。注意在多線程環境中使用隊列需要考慮線程安全性,可以使用queue.Queue
類本身提供的線程安全機制來保證安全訪問。