1. 程式人生 > >queue.Queue()

queue.Queue()

一、構造方法

  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()就會不阻塞