1

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

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

有没有办法杀死所有剩余的活跃孩子并退出?此外,一旦至少有一个孩子返回我们正在等待的答案,是否有更好的方法来停止?

4

1 回答 1

1

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

multiprocessing.Pool 似乎更合适,并且允许完全按照您的要求进行操作:您可以迭代imap_unordered(或apply_async轮询结果),一旦您拥有了您正在寻找terminate()的池,那么join()它就可以了。

于 2020-06-03T10:19:30.307 回答