在 ProcessPoolExecutor 中杀死进程

Killing processes in ProcessPoolExecutor

我正在使用 Python 的 ProcessPoolExecutor 到 运行 多个并行进程,并在其中任何一个完成时处理它们。然后我查看他们的输出,一旦 其中至少一个 给出令人满意的答案,我就想退出程序。

但是,这是不可能的,因为在调用 pool.shutdown(wait=False) 时,我必须等待 pool 中的所有活动任务完成才能退出我的脚本。

有没有办法杀死所有剩余的活跃 children 并退出? 另外,有没有更好的方法来停止至少一个 child returns 我们正在等待的答案?

你在做什么不是很清楚,但执行者认为我完全是错误的工具。

multiprocessing.Pool 似乎更合适,并且可以完全按照您的要求进行操作:您可以迭代 imap_unordered (或 apply_async 并轮询结果),并且一次你有你想要的只是 terminate() 游泳池然后 join() 它。