標籤:名稱 並發編程 逗號 關鍵字 不能 ESS 逾時 rmi 執行個體
一、multiprocessing模組
1、multiprocessing模組用來開啟子進程,並在子進程中執行我們定製的任務(比如函數),該模組與多線程模組threading的編程介面類似。
2、multiprocessing模組的功能眾多:支援子進程、通訊和共用資料、執行不同形式的同步,提供了Process、Queue、Pipe、Lock等組件。
二、Process類
Process([group [, target [, name [, args [, kwargs]]]]])由該類執行個體化得到的對象,表示一個子進程中的任務(尚未啟動)強調:1. 需要使用關鍵字的方式來指定參數2. args指定的為傳給target函數的位置參數,是一個元組形式,必須有逗號參數:group 參數未使用,值始終為Nonetarget 表示調用對象,即子進程要執行的任務args 表示調用對象的位置參數元組,args=(1,2,‘tom‘,)kwargs 表示調用對象的字典,kwargs={‘name‘:‘tom‘,‘age‘:18}name 為子進程的名稱方法:p.start():啟動進程,並調用該子進程中的p.run() p.run():進程啟動時啟動並執行方法,正是它去調用target指定的函數,我們自訂類的類中一定要實現該方法p.terminate():強制終止進程p,不會進行任何清理操作,如果p建立了子進程,該子進程就成了殭屍進程,使用該方法需要特別小心這種情況。如果p還儲存了一個鎖那麼也將不會被釋放,進而導致死結p.is_alive():如果p仍然運行,返回Truep.join([timeout]):主線程等待p終止(強調:是主線程處於等的狀態,而p是處於啟動並執行狀態),直到子進程運行結束才運行。timeout是可選的逾時時間,需要強調的是,p.join只能join住start開啟的進程,而不能join住run開啟的進程屬性:p.daemon:預設值為False,如果設為True,代表p為後台啟動並執行守護進程,當p的父進程終止時,p也隨之終止,並且設定為True後,p不能建立自己的新進程,必須在p.start()之前設定p.name:進程的名稱p.pid:進程的pidp.exitcode:進程在運行時為None、如果為–N,表示被訊號N結束(瞭解即可)p.authkey:進程的身分識別驗證鍵,預設是由os.urandom()隨機產生的32字元的字串。這個鍵的用途是為涉及網路連接的底層處理序間通訊提供安全性,這類串連只有在具有相同的身分識別驗證鍵時才能成功(瞭解即可)
並發編程(二)——開啟進程、