1. 程式人生 > >Python實現多進程

Python實現多進程

多個 名稱 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實現多進程