join()与
threading或一起使用时,该方法
multiprocessing与之无关
str.join()-实际上没有将任何东西串联在一起。相反,它仅表示“等待此[线程/进程]完成”。
join之所以使用该名称,是因为该
multiprocessing模块的API看起来类似于该
threading模块的API,并且该
threading模块
join用于其
Thread对象。
join在许多编程语言中,使用该术语表示“等待线程完成”是很常见的,因此Python也采用了它。
现在,您看到有和没有调用都延迟20秒的原因
join()是因为默认情况下,当主进程准备退出时,它将隐式调用
join()所有正在运行的
multiprocessing.Process实例。在
multiprocessing文档中并未对此进行明确说明,但在“编程指南”部分中进行了提及:
还请记住,非守护进程将自动加入。
您可以通过设置覆盖此行为
daemon上的标志
Process来
True之前,要启动的过程:
p = Process(target=say_hello)p.daemon = Truep.start()# Both parent and child will exit here, since the main process has completed.
如果这样做,则子进程将在主进程完成后立即终止:
守护程序
进程的守护程序标志,一个布尔值。必须在调用start()之前进行设置。
初始值是从创建过程继承的。
进程退出时,它将尝试终止其所有守护程序子进程。



