1. 程式人生 > 程式設計 >Python程序間通訊multiprocess程式碼例項

Python程序間通訊multiprocess程式碼例項

仔細說來,multiprocess不是一個模組而是python中一個操作、管理程序的包。 之所以叫multi是取自multiple的多功能的意思,在這個包中幾乎包含了和程序有關的所有子模組。由於提供的子模組非常多,為了方便大家歸類記憶,我將這部分大致分為四個部分:建立程序部分,程序同步部分,程序池部分,程序之間資料共享。重點強調:程序沒有任何共享狀態,程序修改的資料,改動僅限於該程序內,但是通過一些特殊的方法,可以實現程序之間資料的共享。

有了之前多執行緒使用以及執行緒間queue的基礎,多程序以及程序間通訊就很好理解了,下面是多程序基本語法以及程序間通訊簡單示例

#多程序基本語法
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) #啟動子程序
  process.start()

#多程序間資料通訊,多程序的queue實際上是python將一個queue序列化後再反序列化給其它程序
#定義一個函式,第一個形參傳遞一個程序queue
def 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裡面讀資料

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。