-
Queue.qsize() 返回隊列的大小
-
Queue.empty() 如果隊列爲空,返回True,反之False
-
Queue.full() 如果隊列滿了,返回True,反之False,Queue.full 與 maxsize 大小對應
-
Queue.get([block[, timeout]])獲取隊列,timeout等待時間
-
Queue.get_nowait() 相當於Queue.get(False),非阻塞方法
-
Queue.put(item) 寫入隊列,timeout等待時間
-
Queue.task_done() 在完成一項工作之後,Queue.task_done()函數向任務已經完成的隊列發送一個信號。每個get()調用得到一個任務,接下來task_done()調用告訴隊列該任務已經處理完畢。
-
Queue.join() 實際上意味着等到隊列爲空,再執行別的操作
import threading import queue import time # 創建隊列,用於存儲數據 q = queue.Queue() icnt = 0 def producer(): while True: global icnt icnt = icnt + 1 #print("producer icnt is:%d "%icnt) data = "hello world" print("producer is:",icnt) q.put(data) # 生產者線程函數,向隊列存入數據 q.join() data = "hello queue aaa " print("producer is:aaa ",icnt) q.put(data) # 生產者線程函數,向隊列存入數據 q.join() time.sleep(1) def consumer(): while True: data = q.get() # 消費者線程,從隊列取出數據 q.task_done() print("consumer is:",data) # 創建並啓動生產者、消費者線程 t1 = threading.Thread(target=producer) t2 = threading.Thread(target=consumer) t1.start() t2.start() # 等待線程結束 t1.join() t2.join()