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方法
进程与进程之间的关系,就相当于公司里的部门与部门之间的关系一样,数据是相互隔离的。