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()
  • 相关阅读:
    一张图带你了解数据分析的完整流程,建议收藏
    【Unnatural × Lemon × 武汉】如果病毒结束了,你最想干什么事
    两万字深度介绍分布式系统原理!【收藏版】
    ETL的基础知识,看完你就全明白了!
    Java最大不重复子串
    一文速懂利用python字典的引用传递实现循环套娃(嵌套)
    ETSI GS MEC 015,MEP 带宽管理 API
    laravel 5.5 ajax返回错误信息
    laravel 5.5 ajax返回错误信息
    从实践出发:微服务布道师告诉你Spring Cloud与Boot他如何选择
  • 原文地址:https://www.cnblogs.com/xudj/p/10310529.html
Copyright © 2011-2022 走看看