[英]How do you list all child processes in python?
我正在使用启动各种子进程的第三方库。 当出现异常时,我想杀死所有子进程。 如何获得子 pid 列表?
您不能总是在创建子流程时记录所有子流程,因为它们反过来会创建您不知道的新流程。 但是,使用 psutil 查找它们非常简单:
import psutil
current_process = psutil.Process()
children = current_process.children(recursive=True)
for child in children:
print('Child pid is {}'.format(child.pid))
创建它们时,记录所有子进程的 pid 通常更安全。 没有一种符合 posix 的方式来列出子 PID。 我知道这可以用 PS 工具完成。
听起来psutil是推荐的方法。 但是,如果您不想依赖外部库,则可以使用ps
命令的--ppid
按父 ID 过滤进程。 (当然,假设您在带有ps
的操作系统上运行。)
这是一个片段,显示了如何调用它:
ps_output = run(['ps', '-opid', '--no-headers', '--ppid', str(os.getpid())],
stdout=PIPE, encoding='utf8')
child_process_ids = [int(line) for line in ps_output.stdout.splitlines()]
使用 psutil,您可以获得所有子进程(甚至递归进程)查看https://psutil.readthedocs.io/en/latest/#psutil.Process.children
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.