【发布时间】:2021-05-25 01:45:08
【问题描述】:
我正在使用 python 开发一个 gui,其目的基本上是以不同的方式处理数据。
我目前有一个窗口用于设置“运行”,另一个窗口用于显示每次运行的状态(开始、运行、完成、错误等)。
我想添加一个功能,用户可以停止来自 gui 的任何进程。
我已经想出了如何添加按钮并将其与特定运行相关联,但我还没有想出如何真正停止进程。 我正在使用 python multiprocessing 来启动不同的任务,因为这也可以让我们最大限度地利用机器的资源。
pool_results = []
pool_results.append(pool.apply_async(func))
到目前为止,我遇到了 pool.terminate(),但这只会杀死所有子进程。
我还查看了 multiprocessing.active_children(),但这提供了对池创建的 workers 的引用,而不是提交到池的进程。工人是与 pid 等相关联的东西。
我还发现每个“池结果”都有一个属性“_job”,这是对进程添加到池中的顺序的引用,但似乎没有任何功能(隐藏或不隐藏)这允许我在将作业提交到池后取消它。
理想情况下,无论进程处于哪个阶段(在队列中等待、正在由工作人员处理等),我都可以取消它。
【问题讨论】:
标签: python multithreading user-interface multiprocessing queue