1. 程式人生 > >python多執行緒爬蟲學習--Queue

python多執行緒爬蟲學習--Queue

Queue是python多執行緒安全的佇列實現,封裝了資料結構中的佇列,保證了執行緒之間使用佇列同步資料不會出錯。

也就是說使用Queue就不用使用鎖去同步資料。

Queue預設構造的大小是無限的,也可以在初始化時指定佇列大小:

Queue q(10)

Queue的使用函式:

get():獲取佇列頭部元素,並且把佇列中該元素彈出

put(元素):插入元素到佇列尾部

qsize():獲取當前佇列的元素個數

empty():判斷佇列是否為空

Queue的預設使用這些函式都是同步阻塞的,也可以使用設定為非阻塞函式。

預設函式為get(self, block=True, timeout=None),timeout是設定的超時時間,非阻塞下直接返回,不會理會超時時間。Queue中其他函式同理,

如果要使用非阻塞的函式,那麼需要這樣寫:get(False, 0)put(元素,False,0)

要注意的一點是非阻塞函式會在沒有成功時丟擲異常(比如獲取元素時佇列為空),所以使用非阻塞函式要注意接收異常。使用try except可以接收異常。