提问人:Si si 提问时间:5/18/2023 最后编辑:TheTridentGuy supports UkraineSi si 更新时间:5/19/2023 访问量:43
终止子进程的子进程
Terminate a Subprocess of Subprocess
问:
我使用以下命令运行 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”的文件,这是我的应用程序。
一旦我调用它,它只会在进程 2 仍然活着时杀死 process1,并且我会看到它的所有日志,直到它完成。process1.terminate()
我确实尝试过:
https://stackoverflow.com/a/320712/4215840
https://stackoverflow.com/a/31464349/4215840
按计划捕获终止Instasck 并这样做,但由于某种原因,这在 Windows 上从未调用过。process2.terminate()
答:
0赞
coffee
5/18/2023
#1
对于一些长期结果,我建议更好的索引和整体进程/内存管理。然而,一个简单的解决方案是,只需迭代您将要终止的任何进程的活动子进程。 可能是您想要使用的。您也可以参考此答案multiprocessing.active_children
评论
0赞
Sion C
5/18/2023
所以问题主要是由于使用子进程?
0赞
Si si
5/18/2023
我将实现一个 Web 服务器位,该位将保持运行、空闲状态,stop_req这是我现在能找到的唯一工作方式,而且以后分发系统会很容易。
评论