queue -- 隊列是一種特殊的線性表,是一種先進先出(FIFO)的數據結構。它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列
而我們使用python中的queue模塊, 可以隊列和線程之間來傳遞數據, 我們實現多線程可以將整個程序進行拆分, 將每一個步驟封裝成一個函數, 函數之間通過隊列來進行交互.
# 導入模塊的三種類
1. from queue import Queue(maxsize)
2. from queue import Lifoqueue(maxsize)
3. from queue import Priorityqueue(maxsize)
maxsize參數: maxsize小於1就表示隊列長度無限
1). 隊列先進先出
2). 類似於堆, 先進后出
3). 通過優先級隊列,級別低先出來
常用的方法:
例子:
q = queue.Queue()
q.qsize() 返回隊列的大小
q.empty() 如果隊列為空,返回True,反之False
q.full() 如果隊列滿了,返回True,反之False
q.get(), block可選參數默認為True, 當隊列為空和block為True的時候停止調用, 直到隊列不為空, 同時它會返回數據
q.put(item), item為必傳參數, 通過參數放入到隊列中, block默認為1,
q.task_done()每完成一個隊列任務的時候, 結束時要說明一下.也就執行get和put后
q.join(), 等待隊列為空, 否則一直阻塞