给定一个正在运行的multiprocessing.Process
实例的list()
,如何在没有Process.join
超时和循环的情况下加入所有实例并返回一次退出的结果?
示例
from multiprocessing import Process
from random import randint
from time import sleep
def run():
sleep(randint(0,5))
running = [ Process(target=run) for i in range(10) ]
for p in running:
p.start()
如何在至少有一个p
中的Process
退出前阻塞?
我不想做的事情是:
exit = False
while not exit:
for p in running:
p.join(0)
if p.exitcode is not None:
exit = True
break
multiprocessing.Process
。如果您使用concurrent.futures.ProcessPoolExecutor
,那么您所要求的事情就很简单了:只需使用map
并在迭代器上调用next
即可。 - Bakuriumap(Process.join, running)
可以吗? - Green Cloak Guynext
都会运行一个进程。我希望所有进程都可以并行启动,并且在至少有一个进程存在时检测到它。如果很简单,您可以贴一小段示例代码来演示您的方法吗? - Ente