12

如何终止使用concurrent.futures开始的正在运行的进程?据我了解,cancel()如果该进程未运行,则该方法可以从队列中删除该进程。但是杀死一个正在运行的进程呢?例如,如果我有一个长时间运行的进程,并且我想在我按下 GUI 中的取消按钮时停止它。

4

2 回答 2

2

在这种情况下,最好将 amultiprocessing.Process用于长时间运行的任务。

在开始新进程multiprocessing.Event 之前创建一个。让子进程定期检查 this 的状态Event,并在Event.is_set()返回时退出True

在您的 GUI 代码中,将回调set()Event.

于 2017-07-30T08:26:08.693 回答
2

您可能想在此处查看我对相关 StackOverflow 问题的回答。

简而言之,似乎没有一种简单的方法可以取消concurrent.futures.ProcessPoolExecutor. 但是您可以通过手动杀死子进程来以一种骇人听闻的方式完成它。

于 2017-08-04T20:43:27.993 回答