併發 32 管道 事件 訊號量 程序池

2022-08-12 11:48:21 字數 1416 閱讀 3001

(像佇列一樣,資料只能取走一次)

conn1,conn2 = pipe()     建立管道

.send()   傳送

.recv()   接收

二.事件(等待)     event類

名 = event()   建立乙個事件(預設狀態為false)

名.set() 改變值為true

名.clear() 改變值為false

名.is_set() 檢視事件的狀態

名.wait() 如果狀態是false 阻塞

true 不阻塞

三.訊號量    semaphore類

(程序鎖時只允許序列,而訊號量允許多個)

內部維護了乙個計數器,acquire-1,release+1,

為0的時候,其他的程序都要在acquire之前等待

名 = semaphore(數量)

名.acquire()

鎖的**

名.release()

四.程序池(程序的建立和銷毀是很有消耗的,影響**執行效率)

名 = pool(數量)

1.   名.map(函式,迭代):非同步提交任務,並且傳參需要可迭代型別的資料,

自帶close和join功能

多程序和程序池的效率比較:

才能給程序池提交下乙個任務,可以直接拿到返回結果res

可以直接拿到結果物件,從結果物件裡面拿結果,要用get方法,

get方法會阻塞程式,沒有拿到結果會一直等待

4.close : 鎖住程序池,防止有其他的新的任務在提交給程序池

join : 等待著程序池將自己裡面的任務都執行完

五.**函式(程序池pool類)

#將前面f1這個任務的返回結果作為引數傳給callback指定的那個function函式

python 管道, 事件, 訊號量, 程序池

from multiprocessing import process,pipe def f1 conn 管道的recv 裡面不用寫數字 from main process conn.recv print 我是子程式 print from main process if name main 建立乙個...

五 併發程式設計 程序訊號量

1.訊號量概念 相當於在鎖的基礎上增加計數器 鎖的概念一樣 只不過可以設定鑰匙的數量上述講的lock,屬於互斥鎖,也就是一把鑰匙配備一把鎖,同時只允許鎖住某乙個資料。而訊號量則是多把鑰匙配備多把鎖,也就是說同時允許鎖住多個資料。比如在乙個粉紅髮廊,裡邊有5位服務人員,那麼這個髮廊最多就同時允許進入5...

訊號量 事件 鎖 守護程序

什麼是程序?程序是計算機中最小的資源分配單位 程序與程序之間資料隔離,執行過程非同步 為什麼會出現程序的概念?合理利用cpu 提高使用者體驗 多個程序是可以同時利用多個cpu的,可以實現並行的效果 在主程序中控制子程序的方法?子程序物件 process target,args 在建立的這一刻根本就沒...