终止子流程的子流程

问题描述 投票:0回答:1

我使用以下方法运行 20 个子流程:

process1 = subprocess.Popen(command1, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
            shell=False, encoding='utf-8', cwd=full_path)

command1
正在调用一个名为“scheduleInstasck.py”的文件,它也会触发另一个命令

process2 = subprocess.Popen(command2, shell=False, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, cwd='./{}'.format(client_folders[running_index]))

command2
正在调用名为“quickstart.py”的文件,这是我的应用程序。

一旦我调用

process1.terminate()
它只会在process2仍然存在时杀死process1并且我会看到它的所有日志直到它完成。

我试过:

https://stackoverflow.com/a/320712/4215840

https://stackoverflow.com/a/31464349/4215840

按 scheduleInstasck 捕获终止并执行

process2.terminate()
但这从未在 Windows 上因某种原因调用过。

python terminate
1个回答
0
投票

对于一些长期结果,我会建议更好的索引和整体进程/内存管理。然而,一个简单的解决方案就是迭代您将要杀死的任何进程的活动子进程。

multiprocessing.active_children
可能是您想要使用的。也可以参考这个答案

© www.soinside.com 2019 - 2024. All rights reserved.