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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。