zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    c/c++ 数组的智能指针 使用
    c/c++ 智能指针 weak_ptr 使用
    在ubuntu18.04上安装EOS
    c/c++ 智能指针 unique_ptr 使用
    python基础-内置装饰器classmethod和staticmethod
    java中5种异步转同步方法
    java自定义注解
    多线程之线程池(Thread,Runnable,callable,Future,FutureTask)
    java反射
    重写ThreadFactory方法和拒绝策略
  • 原文地址:https://www.cnblogs.com/xudj/p/10310529.html
Copyright © 2011-2022 走看看