当前位置: 首页 > 图灵资讯 > 行业资讯> Python Process创建进程(2种方法)详解

Python Process创建进程(2种方法)详解

发布时间:2025-10-13 17:52:17

虽然使用 os.fork() 该方法可以启动多个过程,但显然不适合 Windows,而 Python 是跨平台语言,所以是跨平台语言 Python 不能局限于 Windows 系统,因此 Python 还提供了其他方法 Windows 创造新的过程。

Python 在 multiprocessing 在模块下提供 Process 创造新的过程。和 Thread 类似地,使用 Process 还有两种方法可以创造新的过程:

以指定函数为例 target,创建 Process 对象可以创建新的过程。

继承 Process 类,并重写它的 run() 创建过程类的方法,创建程序 Process 以子类实例为过程。

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

run():重写这种方法可以实现过程的执行体。

start():该方法用于启动过程。

join([timeout]):这种方法类似于线程 join() 方法,当前的过程必须等待 join 只有在执行过程完成后才能向下执行。

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

is_alive():判断过程是否还活着。

daemon:该属性用于判断或设置过程的背景状态。

pid:返回进程的 ID。

authkey:授权返回过程 key。

terminate():中断过程。

以指定函数作为target创建新过程

以下是指定函数的介绍 target 创造新的过程。

importmultiprocessing
importos

#将一个普通的action函数定义为进程执行体
defaction(max):
foriinrange(max):
print("(%s)子进程(父进程)(%s)):%d"%
(os.getpid(),os.getppid(),i))
if__name__=='__main__':
#以下是主程序(即主程序)
foriinrange(100):
print("(%s)主进程:%d"%(os.getpid(),i))
ifi==20:
#创建和启动第一个过程
mp1=multiprocessing.Process(target=action,args=(100,))
mp1.start()
#创建并启动第一个过程
mp2=multiprocessing.Process(target=action,args=(100,))
mp2.start()
mp2.join()
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('完成主流程执行!')

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

相关文章

Python Process创建进程(2种方法)详解

Python Process创建进程(2种方法)详解

2025-10-13
Python __repr__()方法:显示属性

Python __repr__()方法:显示属性

2025-10-13
Python中==和is有什么区别

Python中==和is有什么区别

2025-10-13
Python中的opener()方法是什么

Python中的opener()方法是什么

2025-10-13
Python之requests模块相关介绍

Python之requests模块相关介绍

2025-10-12
如何利用Python进行垃圾分类

如何利用Python进行垃圾分类

2025-10-12