您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python中進(jìn)程間通信multiprocess的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
仔細(xì)說來,multiprocess不是一個(gè)模塊而是python中一個(gè)操作、管理進(jìn)程的包。 之所以叫multi是取自multiple的多功能的意思,在這個(gè)包中幾乎包含了和進(jìn)程有關(guān)的所有子模塊。由于提供的子模塊非常多,為了方便大家歸類記憶,我將這部分大致分為四個(gè)部分:創(chuàng)建進(jìn)程部分,進(jìn)程同步部分,進(jìn)程池部分,進(jìn)程之間數(shù)據(jù)共享。重點(diǎn)強(qiáng)調(diào):進(jìn)程沒有任何共享狀態(tài),進(jìn)程修改的數(shù)據(jù),改動(dòng)僅限于該進(jìn)程內(nèi),但是通過一些特殊的方法,可以實(shí)現(xiàn)進(jìn)程之間數(shù)據(jù)的共享。
有了之前多線程使用以及線程間queue的基礎(chǔ),多進(jìn)程以及進(jìn)程間通信就很好理解了,下面是多進(jìn)程基本語法以及進(jìn)程間通信簡單示例
#多進(jìn)程基本語法 import multiprocessing, time, os def process_test(): time.sleep(3) print("my multiprocessing test") print("my pprocess id is",os.getppid()) print("my process id is",os.getpid()) if __name__ == '__main__': #多線程必須寫在if __name__后面,為什么??? process = multiprocessing.Process(target=process_test) #啟動(dòng)子進(jìn)程 process.start() #多進(jìn)程間數(shù)據(jù)通信,多進(jìn)程的queue實(shí)際上是python將一個(gè)queue序列化后再反序列化給其它進(jìn)程 #定義一個(gè)函數(shù),第一個(gè)形參傳遞一個(gè)進(jìn)程queue def m_queue_test(Queue, name): Queue.put(("multiprocess queue test",name)) #put一次只能傳遞一個(gè)數(shù)據(jù)對象,多個(gè)對象必須使用列表 元組 字典等傳遞 if __name__ == '__main__': q = multiprocessing.Queue() #主進(jìn)程實(shí)例化一個(gè)進(jìn)程queue process2 = multiprocessing.Process(target=m_queue_test, args=(q, "zsq")) #將q傳遞給子進(jìn)程,由子進(jìn)程往里面?zhèn)鬟f數(shù)據(jù) process2.start() print(q.get())#主進(jìn)程從queue里面讀數(shù)據(jù)
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python中進(jìn)程間通信multiprocess的示例分析”這篇文章對大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。