做用:編程
# 先入先出 maxsize 可設置大小,設置block=False拋異常 class queue.Queue(maxsize=0) # 後進先出 class queue.LifoQueue(maxsize=0) # 存儲數據時可設置優先級的隊列 # 優先級設置數越小等級越高 class queue.PriorityQueue(maxsize=0) # 放入數據 Queue.put(item, block=True, timeout=None) # 取出數據 #沒有數據將會等待 Queue.get(block=True, timeout=None) # 若是1秒後沒取到數據就退出 Queue.get(timeout = 1) # 取數據,若是沒數據拋queue.Empty異常 Queue.get_nowait() # 查看隊列大小 Queue.qsize() # 返回True,若是空 Queue.empty() #return True if empty # 設置隊列大小 Queue.full() # 後續調用告訴隊列,任務的處理是完整的。 Queue.task_done()
import threading,time import queue # 最多存入10個 q = queue.Queue(maxsize=10) def producer(name): count = 1
while True:
# 生產一塊骨頭 q.put("骨頭 %s" % count ) print("生產了骨頭",count) count +=1 time.sleep(0.3) def consumer(name): while True: print("%s 取到[%s] 而且吃了它" %(name, q.get())) time.sleep(1) # 告知這個任務執行完了 q.task_done() # 生成線程 p = threading.Thread(target=producer,args=("德國骨科",)) c = threading.Thread(target=consumer,args=("陳狗二",)) d = threading.Thread(target=consumer,args=("呂特黑",)) # 執行線程 p.start() c.start() d.start()