queue介紹
queue是python中的標準庫,俗稱佇列。
在python中,多個執行緒之間的資料是共享的,多個執行緒進行資料交換的時候,不能夠保證資料的安全性和一致性,所以當多個執行緒需要進行資料交換的時候,佇列就出現了,佇列可以完美解決執行緒間的資料交換,保證執行緒間資料的安全性和一致性。
注意: 在python2.x中,模組名為Queue
queue模組有三種佇列及建構函式
Python queue模組的FIFO佇列先進先出。 queue.Queue(maxsize)
LIFO類似於堆,即先進後出。 queue.LifoQueue(maxsize)
還有一種是優先順序佇列級別越低越先出來。 queue.PriorityQueue(maxsize)
queue模組中的常用方法
queue.qsize() 返回佇列的大小
queue.empty() 如果佇列為空,返回True,反之False
queue.full() 如果佇列滿了,返回True,反之False
queue.full 與 maxsize 大小對應
queue.get([block[, timeout]])獲取佇列,立即取出一個元素, timeout超時時間
queue.put(item[, timeout]]) 寫入佇列,立即放入一個元素, timeout超時時間
queue.get_nowait() 相當於queue.get(False)
queue.put_nowait(item) 相當於queue.put(item, False)
queue.join() 阻塞呼叫執行緒,直到佇列中的所有任務被處理掉, 實際上意味著等到佇列為空,再執行別的操作
queue.task_done() 在完成一項工作之後,queue.task_done()函式向任務已經完成的佇列傳送一個訊號
程式碼例項
以下程式碼在Python3下透過
建立佇列
import queue q = queue.Queue()
empty方法(如果佇列為空,返回True)
import queue q = queue.Queue() print(q.empty()) #輸出:True
full方法(如果佇列滿了,返回True)
import queue q = queue.Queue(1) #指定佇列大小 q.put('a') print(q.full()) #輸出:True
put方法和get方法
import queue q = queue.Queue() q.put('a') q.put('b') print(q.get()) #輸出:a
qsize方法(返回佇列裡元素個數)
import queue q = queue.Queue() q.put('a') q.put('b') print(q.qsize()) #輸出:2
queue模組在上一篇文章《Python3多執行緒爬蟲例項講解》中使用到了,大家也可以結合這篇爬蟲多執行緒文章深入理解queue。