怎么在Python中利用过程创建进程

  介绍

这篇文章给大家介绍怎么在Python中利用过程创建进程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Python多处理模块提供了流程类,该类可用来在Windows平台上创建新进程。和使用线程类创建多线程方法类似,使用过程类创建多进程也有以下2种方式:

直接创建过程类的实例对象,由此就可以创建一个新的进程;

通过继承过程类的子类,创建实例对象,也可以创建新的进程。注意,继承过程类的子类需重写父类的运行()方法。

不仅如此,过程类中也提供了一些常用的属性和方法,如表1所示。

属性名或方法名功能运行()第2种创建进程的方式需要用的到,继承类中需要对方法进行重写,该方法中包含的是新进程要执行的代码.start()和启动子线程一样,新创建的进程也需要手动启动,该方法的功能就是启动新创建的线程. join((超时))和线程类加入()方法的用法类似,其功能是在多进程执行过程,其他进程必须等到调用加入()方法的进程执行完毕(或者执行规定的超时时间)后,才能继续执行;is_alive()判断当前进程是否还活着.terminate()中断该进程. name属性可以为该进程重命的名,也可以获得该进程的名称.daemon和守护线程类似,通过设置该属性为真,可将新建进程设置为“守护进程”.pid返回进程的ID号。大多数操作系统都会为每个进程配备唯一的ID号。

表1 Python类过程常用属性和方法

接下来将一一对创建进程的2种方法做详细的讲解。

通过过程类创建进程

和使用线程类创建子线程的方式非常类似,使用过程类创建实例化对象,其本质是调用该类的构造方法创建新进程.Process类的构造方法格式如下:

def  __init__(自我、组=没有目标=None, name=None, arg游戏=(),kwargs={})

其中,各个参数的含义为:

<李>

组:该参数未进行实现,不需要传参;

<李>

目标:为新建进程指定执行任务,也就是指定一个函数;

<李>

名称:为新建进程设置名称;

<李>

参数:为目标参数指定的参数传递非关键字参数;

<李>

kwargs:为目标参数指定的参数传递关键字参数。

下面程序演示了如何用过程类创建新进程。

得到multiprocessing  import 过程   import 操作系统   print(“当前进程ID:“, os.getpid ())   #,定义一个函数,准备作为新进程的,target 参数   def 行动(名称、*添加):   ,打印(名字)   ,for  arc 拷贝;添加:   打印才能(“% s ——当前进程% d", %,(弧,os.getpid ()))   if  __name__==& # 39; __main__ # 39;:   ,#定义为进程方法传入的参数   ,my_tuple =, (“http://jb51.net/python/" \   ,才能“http://jb51.net/shell/" \   ,,,“http://jb51.net/java/"。)   ,#创建子进程,执行,行动(),函数=,my_process 过程(=target 行动,,args =, (“my_process进程“,* my_tuple))   ,#启动子进程   ,my_process.start ()   ,#主进程执行该函数   ,行动(“主进程“,* my_tuple)

程序执行结果为:
当前进程ID: 12980
主进程
http://jb51.net/python/鼻敖?2980
http://jb51.net/shell/鼻敖?2980
http://jb51.net/java/鼻敖?2980
当前进程ID: 12860
my_process进程
http://jb51.net/python/鼻敖?2860
http://jb51.net/shell/鼻敖?2860
http://jb51.net/java/鼻敖?2860

需要说明的是,通过多处理。过程来创建并启动进程时,程序必须先判断if __name__==& # 39; __main__ # 39;:,否则运行该程序会引发异常。

此程序中有2个进程,分别为主进程和我们创建的新进程,主进程会执行整个程序,而子进程不会执行if __name__==& # 39; __main__ # 39;中包含的程序,而是先执行此判断语句之外的所有可执行程序,然后再执行我们分配让它的任务(也就是通过目标参数指定的函数)。

通过过程继承类创建进程

和使用子线程类创建线程的方式类似,除了直接使用过程类创建进程,还可以通过创建过程的子类来创建进程。

需要注意的是,在创建过程的子类时,需在子类内容重写运行()方法。实际上,该方法所起到的作用,就如同第一种创建方式中目标参数执行的函数。

另外,通过过程子类创建进程,和使用过程类一样,先创建该类的实例对象,然后调用开始()方法启动该进程。下面程序演示如何通过子过程类创建一个进程。

怎么在Python中利用过程创建进程