一、構造方法
Queue
是構造方法,函數簽名是Queue(maxsize=0)
,其中maxsize
設置隊列的大小。
二、實例方法
- Queue.qsize(): 返回queue的近似值。注意:qsize>0 不保證(get)取元素不阻塞。qsize<maxsize不保證(put)存元素不會阻塞
- Queue.empty(): 判斷隊列是否為空。和上面一樣注意
- Queue.full(): 判斷是否滿了。和上面一樣注意
- Queue.put(item, block=True, timeout=None): 往隊列里放數據。如果滿了的話,blocking = False 直接報 Full異常。如果blocking = True,就是等一會,timeout必須為 0 或正數。None為一直等下去,0為不等,正數n為等待n秒還不能存入,報Full異常。
- Queue.put_nowait(item): 往隊列里存放元素,不等待
- Queue.get(item, block=True, timeout=None): 從隊列里取數據。如果為空的話,blocking = False 直接報 empty異常。如果blocking = True,就是等一會,timeout必須為 0 或正數。None為一直等下去,0為不等,正數n為等待n秒還不能讀取,報empty異常
- Queue.get_nowait(item): 從隊列里取元素,不等待兩個方法跟蹤入隊的任務是否被消費者daemon進程完全消費
- Queue.task_done(): 表示隊列中某個元素唄消費進程使用,消費結束發送的信息。每個get()方法會拿到一個任務,其隨后調用task_done()表示這個隊列,這個隊列的線程的任務完成。就是發送消息,告訴完成啦!
如果當前的join()當前處於阻塞狀態,當前的所有元素執行后都會重啟(意味着收到加入queue的每一個對象task_done()調用的信息)
如果調用的次數操作放入隊列的items的個數多的話,會觸發ValueError異常 - Queue.join(): 一直阻塞直到隊列中的所有元素都被取出和執行未完成的個數,只要有元素添加到queue中就會增加。未完成的個數,只要消費者線程調用task_done()表明其被取走,其調用結束。當未完成任務的計數等於0,join()就會不阻塞