欢迎访问宙启技术站
智能推送

Python中如何使用start()函数启动子进程

发布时间:2023-12-29 05:37:12

在Python中使用start()函数可以启动一个子进程来并行执行任务。start()函数是multiprocessing.Process类的一个方法,它会创建一个新的进程并执行指定的任务。

下面是一个使用start()函数启动子进程的例子:

import multiprocessing
import time

# 定义要执行的任务
def task(name):
    print(f'开始执行任务{name}')
    time.sleep(2)
    print(f'任务{name}执行完毕')

if __name__ == '__main__':
    # 创建子进程
    p1 = multiprocessing.Process(target=task, args=('A',))
    p2 = multiprocessing.Process(target=task, args=('B',))

    # 启动子进程
    p1.start()
    p2.start()

    # 等待子进程执行完毕
    p1.join()
    p2.join()

    print('所有任务执行完毕')

运行以上代码,可以看到输出结果类似于下面的内容:

开始执行任务A
开始执行任务B
任务A执行完毕
任务B执行完毕
所有任务执行完毕

在这个例子中,我们首先定义了一个task函数,该函数表示要执行的任务。在这个任务中,我们使用time.sleep(2)来模拟一个耗时的操作。

然后,我们在if __name__ == '__main__':这个条件下,创建了两个子进程p1p2,并分别使用target参数指定要执行的任务,使用args参数传递给任务的参数。

接着,我们使用start()方法启动了这两个子进程。这样,子进程就会并行执行任务了。然后,我们使用join()方法,等待子进程执行完毕。最后,在所有任务执行完毕后,打印一条消息。

需要注意的是,我们只能在主程序中使用multiprocessing模块的方法和函数,这是因为multiprocessing模块在Windows系统下会创建一个新的Python解释器进程,在该进程中执行任务。而在Unix和Linux系统下会创建一个新的进程,在该进程中执行任务。

此外,需要注意的是,在Windows系统下,如果我们要使用start()函数启动子进程,那么我们就必须在if __name__ == '__main__'这个条件下创建子进程。这是为了避免子进程再次创建子进程,从而导致无限递归。