Python3並行程式設計之queue模組

2021-10-05 03:15:58 字數 1391 閱讀 9347

匯入模組

import queue
匯入模組中無第三方模組

注: queue是python的標準庫。該庫在python2中名為queue,在python3中名為queue。

三種型別的佇列

queue模組實現了三種型別的佇列,它們的區別僅僅是資料取回的順序。在 fifo 佇列中,先新增的資料先取回。在 lifo 佇列中,後新增的資料後取出。在優先順序佇列中,提取每次傳入佇列中的資料的第乙個值,不管該值是數字,字母還是漢字都將以unicode編碼值進行優先順序排序,值越小優先順序越高,提取時將優先選擇該資料。

不管是何種佇列,在提取乙個值之後,該值都將在佇列中抹除。

#	建立fifo佇列物件。

queue_object = queue.fifoqueue(

)# 建立lifo佇列物件。

queue_object = queue.lifoqueue(

)# 建立優先順序佇列物件。

queue_object = queue.priorityqueue(

)

這三個類都只有乙個maxsize引數,用來設定佇列的長度。

方法描述

put(item,block=true,'timeout=none)

當block為true時,將在必要時發生阻塞直至佇列可用。若timeout為正數,最多阻塞timeout秒,阻塞結束後將引發 full 異常;當block為false時,timeout會被忽略並在佇列不可用時引發 full 異常。

get(item,block=true,timeout=none)

當block為true時,將在必要時發生阻塞直至佇列可用。若timeout為正數,最多阻塞timeout秒,阻塞結束後將引發 empty 異常;當block為false時,timeout會被忽略並在佇列不可用時引發 empty 異常。

put_nowait(item)

相當於 put(item,false) 。

get_nowait(item)

相當於 get(item,false)。

qsize()

返回佇列當前大小。qsize方法的返回值並不保證操作佇列時是否會被阻塞。

empty

當隊列為空時返回true,否則返回false。empty方法的返回值並不保證操作佇列時是否會被阻塞。

full()

當佇列以滿時返回true,否則返回false。full方法的返回值並不保證操作佇列時是否會被阻塞。

task_done()

對該方法的呼叫表示已經完成了一次對佇列的get操作。

join

保持阻塞狀態直到佇列中的所有資料都已被獲取,該方法以queue.task_done()方法的呼叫次數為依據進行判斷。

python3核心程式設計之執行緒

啟動執行緒 thread.start 建立執行緒 threading.thread target 繼承方式建立 class mythread threading.thread def run self 建立鎖mutex threading.lock 鎖定mutex.acquire blocking ...

Python3併發程式設計之threading模組

建立執行緒物件 threading.thread 引數 引數 描述group none 該類中的待擴充套件引數。target none 目標函式,即被開闢執行緒的執行任務。預設值為none,表示什麼都不執行。name none 該執行緒的名稱。在預設情況下,執行緒的唯一名稱以 thread n 的形...

並行程式設計之PLINQ

並行 linq plinq 是linq 模式的並行實現。plinq 的主要用途是通過在多核計算機上以並行方式執行查詢委託來加快 linq to objects 查詢的執行速度。與順序linq 查詢一樣,plinq 查詢對任何記憶體中 ienumerable 或ienumerable of t 資料來...