python3 開啟多進程的兩種寫法


寫法1

import time
from multiprocessing import Process


def func(name, age):
    print(f"我是{name}")
    time.sleep(0.2)
    print(f"{name}結束 {age}")


if __name__ == '__main__':
    # target是目標函數,args是位置參數,必須是元組類型,kwargs是關鍵字參數,必須是字典類型
    p1 = Process(target=func, args=("進程1",), kwargs={"age": 18})  # 創建第一個進程
    p2 = Process(target=func, args=("進程2",), kwargs={"age": 20})  # 創建第二個進程
    p1.start()  # 開啟第一個進程
    p2.start()  # 開啟第二個進程
    print("主進程執行結束,子進程是依附於主進程存在的,所以,子進程都結束后,主進程才真正的結束。")

執行結果:

主進程執行結束,子進程是依附於主進程存在的,所以,子進程都結束后,主進程才真正的結束。
我是進程1
我是進程2
進程1結束 18
進程2結束 20

寫函數,target是功能,args是位置參數,kwargs是關鍵字參數

 

寫法2

import time
from multiprocessing import Process


class MyProcess(Process):
    def __init__(self, name):  # 可以通過初始化來傳遞參數
        super(MyProcess, self).__init__()
        self.name = name

    def run(self):  # 必須有的函數
        print(f"{self.name}開始")
        time.sleep(0.2)
        print(f"{self.name}結束")


if __name__ == '__main__':
    p1 = MyProcess("進程1")  # 創建第一個進程,並傳遞參數
    p2 = MyProcess("進程2")  # 創建第二個進程,並傳遞參數
    p1.start()  # 開啟第一個進程
    p2.start()  # 開啟第二個進程
    print("主進程執行結束,子進程是依附於主進程存在的,所以,子進程都結束后,主進程才真正的結束。")

執行結果:

主進程執行結束,子進程是依附於主進程存在的,所以,子進程都結束后,主進程才真正的結束。
MyProcess-1開始
MyProcess-2開始
MyProcess-1結束
MyProcess-2結束

寫類,繼承Process,必須寫run方法

 

進程與進程之間的關系,就相當於公司里的部門與部門之間的關系一樣,數據是相互隔離的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM