python中的process,Python创建进程

  python中的process,Python创建进程

  虽然使用os.fork()方法可以启动多个进程,但是这种方法显然不适合Windows,而且Python是跨平台的语言,所以Python一定不能局限于Windows系统,所以Python也提供了在Windows下创建新进程的其他方法。

  Python提供了多处理模块下的进程来创建新的进程。与Thread类似,使用Process创建新进程有两种方式:

  以指定的函数为目标,创建一个Process对象来创建一个新的进程。

  继承Process类并覆盖其run()方法来创建一个Process类。该程序创建一个process子类的实例作为流程。

  Process类也有以下类似的方法和属性:

  Run():覆盖这个方法来实现流程的执行。

  Start():这个方法用于启动进程。

  Join([timeout]):这个方法类似于线程的Join()方法。当前流程必须等待加入的流程完成其执行,然后才能向下执行。

  Name:该属性用于设置或访问进程的名称。

  Is_alive():确定进程是否仍处于活动状态。

  Daemon:该属性用于判断或设置进程的后台状态。

  Pid:返回进程的id。

  Authkey:返回进程的授权密钥。

  Terminate():中断进程。

  以指定的功能为目标创建一个新流程。

  先介绍一下如何以指定的函数为目标创建一个新的流程。

  导入多重处理

  进口货

  #定义一个普通的动作函数,它将被用作流程执行器。

  污损(最大):

  最大范围:

  打印((%s)子进程(父进程: (%s)):% d%

  (os.getpid(),os.getppid(),I))

  if__name__==__main__:

  #这里是主程序(即主进程)

  电话:(100):

  print((% s)主进程3360% d“%(OS。GetPID(),I))

  ifi==20:

  #创建并启动第一个流程

  mp1=多重处理。进程(target=action,args=(100,))

  mp1.start()

  #创建并启动第一个流程

  mp2=多重处理。进程(target=action,args=(100,))

  mp2.start()

  mp2.join()

  nbsp;print('主进程执行完成!')上面程序中第 15、16 两行代码就是程序创建并启动新进程的关键代码,不难发现这两行代码和创建并启动新线程的代码几乎一样,只是此处创建的是 multiprocessing.Process 对象。

  运行上面程序,可以看到程序中运行了三个进程,一个主进程和程序启动的两个子进程。由于程序中调用了 mp2.join(),因此主进程必须等 mp2 进程完成后才能向下执行。

  继承Process类创建子进程

  继承 Process 类创建子进程的步骤如下:

  定义继承 Process 的子类,重写其 run() 方法准备作为进程执行体。

  创建 Process 子类的实例。

  调用 Process 子类的实例的 start() 方法来启动进程。

  下面程序通过继承 Process 类来创建子进程:

  

importmultiprocessing

  importos

  classMyProcess(multiprocessing.Process):

  def__init__(self,max):

  self.max=max

  super().__init__()

  #重写run()方法作为进程执行体

  defrun(self):

  foriinrange(self.max):

  print("(%s)子进程(父进程:(%s)):%d"%

  (os.getpid(),os.getppid(),i))

  if__name__=='__main__':

  #下面是主程序(也就是主进程)

  foriinrange(100):

  print("(%s)主进程:%d"%(os.getpid(),i))

  ifi==20:

  #创建并启动第一个进程

  mp1=MyProcess(100)

  mp1.start()

  #创建并启动第一个进程

  mp2=MyProcess(100)

  mp2.start()

  mp2.join()

  print('主进程执行完成!')

该程序的运行结果与上一个程序的运行结果大致相同,它们只是创建进程的方式略有不同而已。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: