我正在使用Python的ProcesspoolExecutor
并行运行多个进程,并在它们完成时对它们进行处理。然后,我查看它们的输出,一旦其中至少一个给出令人满意的答案,我想退出程序。
但是,这是不可能的,因为调用pool.shutdown(wait=False)
后,我必须等待pool
中的所有活动任务完成才能退出脚本。
是否有办法杀死所有剩余的活跃孩子并退出? 另外,是否有更好的方法来阻止至少一个孩子返回我们正在等待的答案?
您正在做的事情还不清楚,但是执行者完全把我当作错误的工具。
multiprocessing.Pool似乎更合适,并且可以完全按照您的要求进行操作:您可以迭代imap_unordered
(或apply_async
并轮询结果),一旦拥有了您想要的东西只是在寻找terminate()
池,然后join()
。