Python3 queue佇列模組詳解

pythontab發表於2018-01-04

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。


相關文章