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