(像佇列一樣,資料只能取走一次)
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 在建立的這一刻根本就沒...