Python進程間通信multiprocess代碼實例
仔細說來,multiprocess不是一個模塊而是python中一個操作、管理進程的包。 之所以叫multi是取自multiple的多功能的意思,在這個包中幾乎包含了和進程有關的所有子模塊。由于提供的子模塊非常多,為了方便大家歸類記憶,我將這部分大致分為四個部分:創建進程部分,進程同步部分,進程池部分,進程之間數據共享。重點強調:進程沒有任何共享狀態,進程修改的數據,改動僅限于該進程內,但是通過一些特殊的方法,可以實現進程之間數據的共享。
有了之前多線程使用以及線程間queue的基礎,多進程以及進程間通信就很好理解了,下面是多進程基本語法以及進程間通信簡單示例
#多進程基本語法import multiprocessing, time, osdef 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) #啟動子進程 process.start()#多進程間數據通信,多進程的queue實際上是python將一個queue序列化后再反序列化給其它進程#定義一個函數,第一個形參傳遞一個進程queuedef m_queue_test(Queue, name): Queue.put(('multiprocess queue test',name)) #put一次只能傳遞一個數據對象,多個對象必須使用列表 元組 字典等傳遞if __name__ == ’__main__’: q = multiprocessing.Queue() #主進程實例化一個進程queue process2 = multiprocessing.Process(target=m_queue_test, args=(q, 'zsq')) #將q傳遞給子進程,由子進程往里面傳遞數據 process2.start() print(q.get())#主進程從queue里面讀數據
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章: