Python 多進程編程之multiprocessing--Process
阿新 • • 發佈:2018-02-08
spa span 語句 檢測 設置 init 輸入一個整數 blog sel
Python 多進程編程之multiprocessing
1,Process
- 跨平臺的進程創建模塊(multiprocessing), 支持跨平臺:windowx/linux
- 創建和啟動
創建格式:p=Process(target=函數名)
----def __init__(self, group=None, target=None, name=None, args=(), kwargs={}):
group:分組(基本不用)
target:表示這個進程實例所調用的對象.
name:給進程起一個別名
args:參數,表示調用對象的位置參數元組
kwargs:表示調用對象的關鍵字參數字典
註意:target後是函數名,一定要記住,是函數名,沒有括號
帶括號的話,子進程就沒有創建,直接在主進程執行了
啟動:p.start() - ----在主進程等待指令之前加入 p.join()
這個命令叫做"阻塞",意思是讓主進程
等待子進程結束之後,再執行join()之後的語句
----可以設置等待子進程時間 p.join(4)
設置時間之後,主進程的阻塞時間只有4秒 - 進程對象.is_alive()
檢測進程是否活著
----會有2個返回值
True:活著
False:死了 - 進程對象.terminate()
----不管進程是否結束,
強制終止進程 - 實例:從鍵盤輸入一個整數,分別開啟兩個進程來計算這個數的累加和和階乘。
(第一個進程用系統提供給我們的類,第二個進程需要自己定義) -
from multiprocessing import Process #方法1: def sumToN(n): s = 0 for i in range(1,n+1): s += i print("累加和:%d"%s) #方法2: class JieCheng(Process): def __init__(self,n): Process.__init__(self) self.n = n def run(self): j = 1 for i in range(1, self.n + 1): j *= i print("%d!=%d"%(self.n, j)) if __name__ == "__main__": #輸入一個數: str_num = input("請輸入一個數:") num = int(str_num) #創建進程--計算
#方法1: 系統提供給我們的類
p1 = Process(target=sumToN,args=(num,))
p1.start()
#方法2:自己定義的類,也叫繼承系統類 p2 = JieCheng(num) p2.start()
Python 多進程編程之multiprocessing--Process