• 创建进程的多种方式


    创建进程的多种方式

    但凡是硬件,都需要有操作系统去管理,只要有操作系统,就有进程的概念,就需要有创建进程的方式,一些操作系统只为一个应用程序设计,比如扫地机器人,一旦启动,所有的进程都已经存在

    multiprocess模块

    • multiprocess不是一个模块是一个操作、管理进程的包。这个包几乎包含了和进程有关的所有子模块。大致分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享

    • Process类介绍

      Process(group,target,name,args,kwargs)
      强调:
      1.需要使用关键子的方式来指定参数
      2.args指定的为传给target函数的位置参数,是一个元组形式,必须有逗号
      参数介绍:
      1.group参数未使用,值始终未None
      2.target表示调用对象,即子进程要执行的任务
      3.args表示调用对象的位置参数元组,args=(1,2,'y',)
      4.kwargs表示调用对象的字典,kwargs={'name':'kkk'}
      5.name为子进程的名称
      
    • Process类创建进程的两种方式

      • 方式一
      # 方式一
      from multiprocessing import Process
      import time
      
      def task(name):
          print(f'start...{name}的子进程')
          time.sleep(5)
          print(f'end...{name}的子进程')
      
      if __name__ == '__main__':
          list1 = []
          for line in range(10):
              p_obj = Process(target=task, 
                              args=('tank',))#元组,必须加,号
              p_obj.start()
              list1.append(p_obj)
      
          for obj in list1:
              obj.join()
      
          print('主进程...')
      
      • 方式二
      # 方式二
      from multiprocessing import Process
      import time
      
      class MyProcess(Process):
          def run(self):
              print(f'start...{self.name}的子进程')
              time.sleep(5)
              print(f'end...{self.name}的子进程')
      
      if __name__ == '__main__':
          list1 = []
          for line in range(10):
              p_obj = MyProcess()
              p_obj.start()
              list1.append(p_obj)
      
          for obj in list1:
              obj.join()
          print('主进程...')
      
    • 强调:在Windows操作系统中由于没有fork(linux操作系统中创建进程的机制),在创建子进程的时候会自动 import 启动它的这个文件,而在 import 的时候又执行了整个文件。因此如果将process()直接写在文件中就会无限递归创建子进程报错。所以必须把创建子进程的部分使用if __name__ == '__main__' 判断保护起来,import 的时候 ,就不会递归运行了。

  • 相关阅读:
    时间序列数据
    python--模块
    聚类模型
    数模写作
    分类问题
    图论的基本概念
    706. Design HashMap
    第七讲异方差、多重共线性、逐步回归
    187.Repeated DNA Sequences
    C语言堆内存的分配和使用
  • 原文地址:https://www.cnblogs.com/YGZICO/p/12006725.html
Copyright © 2020-2023  润新知