Python進程的通信Queue、Pipe實例分析
本文實例講述了Python進程的通信Queue、Pipe。分享給大家供大家參考,具體如下:
內(nèi)容相關(guān):概念:進程的通信
Queue:創(chuàng)建與使用
Pipe:創(chuàng)建與使用
進程通信的概念 進程的資源空間是相互獨立的,一般而言是不能相互訪問的。但很多情況下進程間需要互相通信,來完成系統(tǒng)的某項功能。進程通過與內(nèi)核及其它進程之間的互相通信來協(xié)調(diào)它們的行為。 通信方法: 數(shù)據(jù)傳輸:一個進程將它的數(shù)據(jù)發(fā)送給另一個進程【如socket一般,把需要通信的數(shù)據(jù)傳輸給對方】 管道:使用一片獨立的區(qū)域【不在雙方的資源空間中】,像一個有兩個口的倉庫一樣,廠家負責在東門把產(chǎn)品放到倉庫,司機負責在西門拉走產(chǎn)品 資源共享:約定一片區(qū)域,雙方都可以隨意取放 消息隊列:這也是一個獨立的區(qū)域,足夠權(quán)限的進程可以向隊列中添加消息,被賦予讀權(quán)限的進程則可以讀走隊列中的消息 Queue: 可以使用隊列multiprocessing.Queue來進行進程通信Queue 在multiprocessing 模塊中:from multiprocessing import Queue
Queue的使用: 1.創(chuàng)建對象:Queue對象=Queue() 2.傳入對象:要在主進程外使用Queue對象,需要作為參數(shù)傳入
#Queue在multiprocessing中from multiprocessing import Queue,Processdef f(q):#要在主進程外使用,需要作為參數(shù)傳入 q.put([’helloworld’]) def m(q): print('get in p2:',q.get())if __name__=='__main__': q=Queue() p=Process(target=f,args=(q,)) p.start() p2=Process(target=m,args=(q,)) p2.start()Pipe: 可以使用管道Pipe來進行進程通信
Pipe 在multiprocessing 模塊中:from multiprocessing import Pipe
Pipe的使用: 1.創(chuàng)建對象:第一個Pipe對象,第二個Pipe對象=Pipe(),返回兩個對象,第一個對象只能發(fā),第二個對象只能收 2.傳入對象:在要發(fā)送的進程,傳入第一個Pipe對象;在要接收的進程,傳入第二個Pipe對象
from multiprocessing import Pipe,Processdef f(conn): a=[1,2,3,4] conn.send(a) conn.close()def m(conn): a=conn.recv() conn.close()if __name__=='__main__': parent_conn,child_conn=Pipe()#返回兩個值,第一個只能發(fā),第二個只能收 p1=Process(target=f,args=(child_conn,)) p2 = Process(target=m, args=(parent_conn,))# p1.start() p2.start() p1.join() p2.join()
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫程序設(shè)計入門教程》及《Python常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章:
1. 基于javaweb+jsp實現(xiàn)企業(yè)車輛管理系統(tǒng)2. XML在語音合成中的應(yīng)用3. php使用正則驗證密碼字段的復雜強度原理詳細講解 原創(chuàng)4. uni-app結(jié)合.NET 7實現(xiàn)微信小程序訂閱消息推送5. asp.net core 認證和授權(quán)實例詳解6. ASP.NET MVC使用Boostrap實現(xiàn)產(chǎn)品展示、查詢、排序、分頁7. jscript與vbscript 操作XML元素屬性的代碼8. .NET中實現(xiàn)對象數(shù)據(jù)映射示例詳解9. ASP.NET Core 7 Razor Pages項目發(fā)布到IIS的詳細過程10. 如何使用ASP.NET Core 配置文件
