python一点通: multiprocessing中start和join是什么意思?

在Python的multiprocessing模块中,使用start()和join()方法来控制Process对象的执行。

start()

start()方法用于启动一个新的进程,该进程开始运行在Process对象创建时指定的目标函数。当你在一个Process对象上调用start()方法时,会发生以下情况:

操作系统创建一个新的进程。
新的进程在一个独立的环境中,具有自己的内存空间,开始执行目标函数以及传递给它的任何参数。

from multiprocessing import Process

def my_function(x):
    print(f'处理 {x}')

process = Process(target=my_function, args=(42,))
process.start()  # 这将在一个新的进程中开始执行my_function

join()

join()方法用于阻塞主进程(即启动新进程的脚本),直到目标进程完成执行。这对于同步进程并确保主进程在继续之前等待所有子进程完成非常有用。

当你在一个Process对象上调用join()方法时,会发生以下情况:

主进程被阻塞,等待目标进程完成执行。
一旦目标进程完成,join()方法返回,主进程继续执行。

from multiprocessing import Process

def my_function(x):
    print(f'处理 {x}')

process = Process(target=my_function, args=(42,))
process.start()  # 在一个新的进程中开始执行my_function
process.join()  # 等待新进程完成后再继续
print("进程完成")

在这个例子中,join()方法确保只有在my_function在新的进程中执行完成后才会打印出"进程完成"的消息。

猜你喜欢

转载自blog.csdn.net/robot_learner/article/details/131300196