python 的 Queue 模塊提供了一種適用於多線程編程的 FIFO 實現。它可用於在生產者和消費者之間線程安全地傳遞消息或其它數據,因此多個線程可以共用同一個 Queue 實例。
Queue 類實現了一個基本的先進先出(FIFO)容器,使用 put() 將元素添加到序列尾端,get() 從隊列尾部移除元素。
Queue 介紹:
- queue 是 python 中的標准庫,俗稱隊列,可以直接 import 引用
- 在 python 中,多個線程之間的數據是共享的,多個線程進行數據交換的時候,不能夠保證數據的安全性和一致性,所以當多個線程需要進行數據交換的時候,隊列就出現了。隊列可以完美解決線程間的數據交換,保證線程間數據的安全性和一致性
Queue 模塊中的常用方法:
Queue.Queue(maxsize=0) FIFO, 若是maxsize小於1就表示隊列長度無限
Queue.qsize() 返回隊列的大小
Queue.empty() 若是隊列為空,返回True,反之False
Queue.full() 若是隊列滿了,返回True,反之False
Queue.get([block, [timeout]]) 讀隊列,timeout為等待時間
Queue.put(item, [block, [timeout]]) 寫隊列,timeout為等待時間
Queue.queue.clear() 清空隊列
把 Queue 中的所有元素轉換為 list:
# q 為隊列
1 def get_queue_values(q): 2 ret = [] 3 while True: 4 if q.qsize() > 0: 5 ret.append(q.get()) 6 else: 7 break 8 return ret