Python--day37--多进程
1,创建多进程(父进程和子进程)
1 import os 2 import time 3 #多进程都要导入multiprocessing 4 from multiprocessing import Process 5 6 def func(args, args2): 7 print(args, args2) 8 time.sleep(1) 9 print('子进程:', os.getpid()) 10 print('子进程的父进程:', os.getpid()) 11 print(12345) 12 13 if __name__ == '__main__': 14 #args是一个元组,传一个参数的时候要在后面加逗号,如args=(54321,) 15 p = Process(target = func, args=('参数','参数2')) #注册 16 #p是一个进程对象,还没有启动进程 17 p.start() #开启了一个子进程 18 print('*'*10) 19 print('父进程:', os.getpid()) #查看当前进程的进程号 20 print('父进程的父进程:', os.getppid()) #查看当前进程的父进程的进程号
运行结果:
2、进程的生命周期:
3,多个进程同时开始:
1 import time 2 from multiprocessing import Process 3 4 def func(arg1,arg2): 5 print('*'*arg1) 6 time.sleep(5) 7 print('*'*arg2) 8 9 if __name__ == '__main__': 10 p = Process(target=func,args=(10,20)) 11 p.start() 12 p1 = Process(target=func, args=(10, 20)) 13 p1.start() 14 p2 = Process(target=func, args=(10, 20)) 15 p2.start() 16 p3 = Process(target=func, args=(10, 20)) 17 p3.start()
运行结果:
4,开启多进程的第二种方法:
#自定义类 继承Precess类
#必须事项一个run方法,run方法中是在子进程中执行的代码
例1:
1 import os 2 from multiprocessing import Process 3 4 class MyProcess(Process): 5 def run(self): 6 print(os.getpid()) 7 8 if __name__ == '__main__': 9 print('主 :', os.getpid()) 10 p1 = MyProcess() 11 p1.start() 12 p2 = MyProcess() 13 p2.start() 14 15 #自定义类 继承Precess类 16 #必须事项一个run方法,run方法中是在子进程中执行的代码
例2:
1 import os 2 from multiprocessing import Process 3 4 class MyProcess(Process): 5 def __init__(self,arg1,arg2): 6 super().__init__() 7 self.arg1 = arg1 8 self.arg2 = arg2 9 10 def run(self): 11 print(self.pid) 12 print(self.name) 13 print(self.arg1) 14 print(self.arg2) 15 16 17 if __name__ == '__main__': 18 # print('主 :', os.getpid()) 19 #实例化:类名跟括号 20 p1 = MyProcess(1,2) 21 p1.start() 22 p2 = MyProcess(3,4) 23 p2.start()