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__':这个条件下,创建了两个子进程p1和p2,并分别使用target参数指定要执行的任务,使用args参数传递给任务的参数。
接着,我们使用start()方法启动了这两个子进程。这样,子进程就会并行执行任务了。然后,我们使用join()方法,等待子进程执行完毕。最后,在所有任务执行完毕后,打印一条消息。
需要注意的是,我们只能在主程序中使用multiprocessing模块的方法和函数,这是因为multiprocessing模块在Windows系统下会创建一个新的Python解释器进程,在该进程中执行任务。而在Unix和Linux系统下会创建一个新的进程,在该进程中执行任务。
此外,需要注意的是,在Windows系统下,如果我们要使用start()函数启动子进程,那么我们就必须在if __name__ == '__main__'这个条件下创建子进程。这是为了避免子进程再次创建子进程,从而导致无限递归。
