Python3-queue模塊-同步隊列


Python3中的queue模塊實現多生產者,多消費者隊列,特別適用於多個線程間的信息的安全交換,主要有三個類

  queue.Queue(maxsize=0)

    構造一個FIFO(先進先出)的隊列

  queue.LifoQueue(maxsize=0)

    構造一個LIFO(后進先出)的隊列

  queue.PriorityQueue(maxsize=0)

    構造一個具有優先級的隊列,存儲的是一個元組(n, value),n為數字代表優先級,數字越小,級別越高

這個模塊定義了兩個異常

  queue.Empty

    如果隊列中為空,繼續調用非阻塞的get_nowait()會拋出異常

  queue.Full

    如果隊列已滿,繼續調用非阻塞的put_nowait()會拋出異常

import queue
# 以下三個隊列都可以設置最大長度maxsize,默認是無限大
print("-------------queue.Queue----------------")
# 線程消息隊列,FIFO(先進先出)
q = queue.Queue()
q.put("one")
q.put("two")
q.put("three")
print(q.get())
print(q.get())
print(q.get())
# print(q.get(timeout=3))     # 隊列中沒有數據,會阻塞

print("-------------queue.LifoQueue----------------")
# 線程消息隊列,LIFO(后進先出)
lq = queue.LifoQueue()
lq.put("one")
lq.put("two")
lq.put("three")
print(lq.get())
print(lq.get())
print(lq.get())

print("-------------queue.PriorityQueue----------------")
# 線程消息隊列,PriorityQueue(優先級的隊列:數字越小優先級越高)
pq = queue.PriorityQueue()
pq.put((1, "Jet"))
pq.put((3, "Jack"))
pq.put((2, "Judy"))
print(pq.get())
print(pq.get())
print(pq.get())
View Code

參考資料

  http://python.usyiyi.cn/translate/python_352/library/queue.html

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM