- 由於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("主進程執行到這里了....")