python - 查找 Python 进程及其所有子进程使用的总内存

标签 python memory process parallel-processing fork

如何找到 Python 进程及其所有 fork 子进程使用的常驻内存总量?

我知道我可以使用 psutil,例如,查找当前进程使用的可用物理内存的百分比,如下所示:

import os
import psutil
current_process = psutil.Process(os.getpid())
mem = current_process.memory_percent()

但我正在寻找一个进程及其子进程使用的总内存(如果有的话)。

最佳答案

您可以使用 psutil.Process.children()(或 psutil.Process.get_children() 旧 psutil 版本)的结果来获取所有子进程和遍历它们。
它可能看起来像:

import os
import psutil
current_process = psutil.Process(os.getpid())
mem = current_process.memory_percent()
for child in current_process.children(recursive=True):
    mem += child.memory_percent()

这将汇总主进程、其子进程(分支)和任何子进程的子进程(如果您使用 recursive=True)使用的内存百分比。您可以在 current psutil docs 中找到此功能或 old docs .

如果您使用的 psutil 版本早于 2,则必须使用 get_children() 而不是 children()

关于python - 查找 Python 进程及其所有子进程使用的总内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24494493/

相关文章:

python - 使用 Numpy 和 Pandas 优化 Python 代码

python - re.match、re.search、re.fullmatch 之间的差异

Java 8 字符串内存不足错误

c# - 杀死应用程序实例的最佳方法

Android进程 killer

python - 如何在python中安装带有下划线的模块名称?

python - 是否可以在不定义函数的情况下实现这一目标?

c++ - 为什么 C++ 函数可以创建可变长度的数组?

python - 使用 del 和切片是否会先创建一个新对象,然后再删除?会就位吗?

c - Fork 并等待 pid 检查之外的子进程