Python實現多進程

Python能夠實現多線程,可是由於Global Interpreter Lock (GIL),Python的多線程只能使用一個CPU內核,即一個時間只有一個線程在運行,多線程只是不一樣線程之間的切換,對多核CPU來講,就是巨大的浪費。如4核CPU,實際上只利用了一個核,CPU利用率只有25%。要充分利用多核CPU,能夠實現Python的多進程。多線程

首先,import相關的包:函數

from multiprocessing import Process, Manager
import multiprocessing

生成進程實例,並啓動進程:spa

p = Process(target = Function_Name, args = (Function_Args_List))
p.start()

其中Function_Name是進程運行的函數名稱,Function_Args_List是函數的參數列表,須要注意的是,以上代碼必須寫在if __name__ == '__main__':下面,不然會報錯。線程

進程運行完了再執行父進程後面的代碼,能夠用join()來實現:code

p.join()

若是是多個進程,必定要讓多個進程都start()之後再join(),不然就成了上一個進程運行完了再開始下一個進程。blog

線程能夠數據共享,進程是不能數據共享的,要實現數據共享,能夠用:進程

m_list = multiprocessing.Manager().list(list)

以上代碼在進程間共享了列表list。ip

相關文章
相關標籤/搜索