進程2

管道:異步

Conn1,conn2 = Pipe()async

Conn1.recv()函數

Conn1.send()ui

數據接收一次就沒有了spa

事件:對象

E = Event()  #初識狀態是false進程

 

E.wait()  當事件對象e的狀態爲false的時候,wait的地方會阻塞程序,當對象狀態爲true的時候,直接在這個wait地方繼續往下執行事件

E.set()  將事件對象的狀態改成true,ip

 

E.is_set() 查看狀態get

E.clear()  將事件對象的狀態改成false

 

信號量:

S = semphore(4),內部維護了一個計數器,acquire-1,release+1,0的時候,其餘的進程都要在acquire以前等待

S.acquire()

須要鎖住的代碼

S.release()

 

進程池(*****)

進程的建立和銷燬是頗有消耗的,影響代碼執行效率

進程池:

Map:異步提交任務,而且傳參須要可迭代類型的數據,自帶closejoin功能

Res = Apply(f1,args=(i,))  #同步執行任務,必須等任務執行結束才能給進程池提交下一個任務,能夠直接拿到返回結果res

 

Res_obj = Apply_async(f1,args=(i,))  #異步提交任務,能夠直接拿到結果對象,從結果對象裏面拿結果,要用get方法,get方法會阻塞程序,沒有拿到結果會一直等待

 

Close : 鎖住進程池,防止有其餘的新的任務在提交給進程池

Join : 等待着進程池將本身裏面的任務都執行完

 

回調函數:

 Apply_async(f1,args=(i,),callback=function)  #將前面f1這個任務的返回結果做爲參數傳給callback指定的那個function函數

相關文章
相關標籤/搜索