Python實現多進程
阿新 • • 發佈:2018-06-30
多個 名稱 fun == 開始 lis 一個 lob inter
Python可以實現多線程,但是因為Global Interpreter Lock (GIL),Python的多線程只能使用一個CPU內核,即一個時間只有一個線程在運行,多線程只是不同線程之間的切換,對多核CPU來說,就是巨大的浪費。如4核CPU,實際上只利用了一個核,CPU利用率只有25%。要充分利用多核CPU,可以實現Python的多進程。
首先,import相關的包:
from multiprocessing import Process, Manager import multiprocessing
生成進程實例,並啟動進程:
p = Process(target = Function_Name, args = (Function_Args_List)) p.start()
其中Function_Name是進程運行的函數名稱,Function_Args_List是函數的參數列表,需要註意的是,以上代碼必須寫在if __name__ == ‘__main__‘:下面,否則會報錯。
進程運行完了再執行父進程後面的代碼,可以用join()來實現:
p.join()
如果是多個進程,一定要讓多個進程都start()以後再join(),否則就成了上一個進程運行完了再開始下一個進程。
線程可以數據共享,進程是不能數據共享的,要實現數據共享,可以用:
m_list = multiprocessing.Manager().list(list)
以上代碼在進程間共享了列表list。
Python實現多進程