- 因爲fork建立進程不能在windows系統上使用,因此產生了multiprocessing.Process
- Process能夠直接實例化而後用start調用,須要指定新的進程執行的函數,用元組的方式傳遞參數
- 進程對象的join方法會讓主進程阻塞,直到子進程執行結束才往下執行,timeout參數能夠指定超時時間
- Process實現的進程,主進程會等全部子進程執行完畢以後才關閉
- 相似Java多線程實現方式,繼承Process類,重寫run方法,而後實例化,再調用start方法
from multiprocessing import Process
import os
import time
def test(arg):
print(arg)
time.sleep(4)
print("the process %s is executing "%os.getpid())
p1 = Process(target=test, args=("haha",)) # 以元組的形式傳遞參數
p1.start()
p1.join(timeout=2) # 子進程執行結束以後主進程才繼續往下執行
# timeout設置超時時間 超過這個時間若是子進程還沒結束 主進程將繼續執行
# p1.terminate() # 殺死p1進程
print("finish") # 主進程執行完以後並不會關閉 而是會等子進程執行結束再關閉
# 相似Java多線程 繼承Process類 重寫run方法 實例化 start調用
class MyProcess(Process):
def run(self):
time.sleep(3)
print("haha...")
m1 = MyProcess()
m1.start()
print("主進程執行到這裏了....")