1. 程式人生 > 實用技巧 >python自帶庫--multiprocessing庫

python自帶庫--multiprocessing庫

multiprocessing模組介紹

python中的多執行緒無法利用多核優勢,如果想要充分地使用多核CPU的資源(os.cpu\_count\(\)檢視),在python中大部分情況需要使用多程序。

Python提供了multiprocessing。 multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務(比如函式),該模組與多執行緒模組threading的程式設計介面類似。

multiprocessing模組的功能眾多:支援子程序、通訊和共享資料、執行不同形式的同步,>提供了Process、Queue、Pipe、Lock等元件。

需要再次強調的一點是:與執行緒不同,程序沒有任何共享狀態,程序修改的資料,改動僅限於該程序內。

二 Process類的介紹

建立程序的類:

Process([group [, target [, name [, args [, kwargs]]]]]),由該類例項化得到的物件,可用來開啟一個子程序

強調:

1. 需要使用關鍵字的方式來指定引數

2. args指定的為傳給target函式的位置引數,是一個元組形式,必須有逗號

引數介紹:

group引數未使用,值始終為None

target表示呼叫物件,即子程序要執行的任務

args表示呼叫物件的位置引數元組,args=(1,2,'mike',)

kwargs表示呼叫物件的字典,kwargs={'name':'mike','age':18}

name為子程序的名稱

方法介紹:

p.start():# 啟動程序,並呼叫該子程序中的p.run()

p.run():# 程序啟動時執行的方法,正是它去呼叫target指定的函式,我們自定義類的類中一定要實現該方法

p.terminate(): # 強制終止程序p,不會進行任何清理操作,如果p建立了子程序,該子程序就成了殭屍程序,使用該方法需要特別小心這種情況。如果p還儲存了一個鎖那麼也將不會被釋放,進而導致死鎖

p.is_alive():# 如果p仍然執行,返回True

p.join([timeout]):# 主程序等待p終止(強調:是主程序處於等的狀態,而p是處於執行的狀態)。timeout是可選的超時時間。

屬性介紹

p.daemon:預設值為False,如果設為True,代表p為後臺執行的守護程序,當p的父程序終止時,p也隨之終止,並且設定為True後,p不能建立自己的新程序,必須在p.start()之前設定

p.name:程序的名稱

p.pid:程序的pid