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()

 

posted @ 2019-01-23 18:01  莱茵河的雨季  阅读(132)  评论(0编辑  收藏  举报