python多進程之Process

  1. 因爲fork建立進程不能在windows系統上使用,因此產生了multiprocessing.Process
  2. Process能夠直接實例化而後用start調用,須要指定新的進程執行的函數,用元組的方式傳遞參數
  3. 進程對象的join方法會讓主進程阻塞,直到子進程執行結束才往下執行,timeout參數能夠指定超時時間
  4. Process實現的進程,主進程會等全部子進程執行完畢以後才關閉
  5. 相似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("主進程執行到這裏了....")
相關文章
相關標籤/搜索