在 ProcessPoolExecutor 中杀死进程
Killing processes in ProcessPoolExecutor
我正在使用 Python 的 ProcessPoolExecutor
到 运行 多个并行进程,并在其中任何一个完成时处理它们。然后我查看他们的输出,一旦 其中至少一个 给出令人满意的答案,我就想退出程序。
但是,这是不可能的,因为在调用 pool.shutdown(wait=False)
时,我必须等待 pool
中的所有活动任务完成才能退出我的脚本。
有没有办法杀死所有剩余的活跃 children 并退出?
另外,有没有更好的方法来停止至少一个 child returns 我们正在等待的答案?
你在做什么不是很清楚,但执行者认为我完全是错误的工具。
multiprocessing.Pool 似乎更合适,并且可以完全按照您的要求进行操作:您可以迭代 imap_unordered
(或 apply_async
并轮询结果),并且一次你有你想要的只是 terminate()
游泳池然后 join()
它。
我正在使用 Python 的 ProcessPoolExecutor
到 运行 多个并行进程,并在其中任何一个完成时处理它们。然后我查看他们的输出,一旦 其中至少一个 给出令人满意的答案,我就想退出程序。
但是,这是不可能的,因为在调用 pool.shutdown(wait=False)
时,我必须等待 pool
中的所有活动任务完成才能退出我的脚本。
有没有办法杀死所有剩余的活跃 children 并退出? 另外,有没有更好的方法来停止至少一个 child returns 我们正在等待的答案?
你在做什么不是很清楚,但执行者认为我完全是错误的工具。
multiprocessing.Pool 似乎更合适,并且可以完全按照您的要求进行操作:您可以迭代 imap_unordered
(或 apply_async
并轮询结果),并且一次你有你想要的只是 terminate()
游泳池然后 join()
它。