# multiprocessing模块的Process类 # from multiprocessing import Process # import time,os # def func(n): # print("子进程" + str(n),os.getpid()) # os.getpid()获取当前进程号 # time.sleep(1) # 不使用多进程跑10个任务 # startTime = time.time() # for n in range(1,11): # func(n) # sec = time.time() - startTime # print(sec) # 10.00492548942566(耗时/秒) # 启动子进程跑10个任务 # if __name__ == "__main__": # p_lst = [] # startTime = time.time() # for n in range(1,11): # # 创建一个子进程 # p = Process(target=func,args=(n,)) # 函数参数以元组类型传入 # p_lst.append(p) # for p in p_lst:p.start() # 启动创建好的进程 # for p in p_lst:p.join() # 等待子进程结束 # sec = time.time() - startTime # print(sec) # 1.4769437313079834(耗时/秒) ''' 输出结果: 子进程2 8428 子进程1 16484 子进程4 7508 子进程3 10928 子进程5 16296 子进程6 12024 子进程7 13808 子进程9 8664 子进程8 10364 子进程10 2172 1.5018908977508545 ''' # 这种方法开启多进程,进程的生命周期(通常常情况下) # 主进程随着子进程代码执行时间短,需要等待子进程执行完毕才结束 # 子进程在自己的代码执行结束就结束 # 多进程开启方法二 # from multiprocessing import Process # import os # # 定义一个类,实现一个run方法(只能是run方法) # class MyPro(Process): # def run(self): # print("子进程",os.getpid()) # if __name__ == "__main__": # for n in range(10): # p = MyPro() # p.start() ''' 输出结果 子进程 15332 子进程 14212 子进程 13752 子进程 10416 子进程 13372 子进程 1088 子进程 8924 子进程 8340 子进程 10016 子进程 8428 ''' # 传参数版本 # from multiprocessing import Process # import os # class MyPro(Process): # # 定义初始化方法 # def __init__(self,msg): # # 先执行父类初始化方法 # super().__init__() # # 定义派生属性 # self.msg = msg # def run(self): # print(self.msg,os.getpid()) # if __name__ == "__main__": # for n in range(10): # p = MyPro("子进程" + str(n)) # p.start() # 进程间数据是隔离的 # from multiprocessing import Process # import os # # def func(): # global n # n = 0 # print("子进程n:",n) # # if __name__ == "__main__": # n = 100 # p = Process(target=func) # p.start() # p.join() # print("主进程n:",n) ''' 输出结果:主进程中n的值并没有被改变 子进程n: 0 主进程n: 100 ''' # 守护进程概念--子进程随着主进程代码的执行完毕而结束 # from multiprocessing import Process # import os # import time # def func(): # while True: # print("守护进程运行中") # time.sleep(1) # if __name__ == "__main__": # p = Process(target=func) # p.daemon = True # 设置子进程为守护进程 # p.start() # print("主进程工作中") # time.sleep(10) # print("主进程工作结束") ''' 输出结果: 主进程工作中 守护进程运行中 守护进程运行中 守护进程运行中 守护进程运行中 守护进程运行中 守护进程运行中 守护进程运行中 守护进程运行中 守护进程运行中 守护进程运行中 主进程工作结束 方法介绍: p.is_alive() 判断子进程是否结束 p.terminate() 终止一个子进程 p.name # 进程名 p.pid # 进程ID '''
Python之多进程一
最新推荐文章于 2023-03-10 10:24:01 发布