You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用psutil获取Windows进程内存:RSS与Private Working Set数值不符问题

解决Python获取Windows进程Private Working Set与任务管理器数值不一致的问题

兄弟,我太懂你这种困惑了——用psutil的process.memory_info().rss拿到的内存数值,和Windows任务管理器里的「Private Working Set(专用工作集)」差了一大截,查了半天文档也没找到对应字段,确实挺闹心的。

为什么数值对不上?

你用的rss对应的是进程的工作集(Working Set),这个统计范畴包含了进程共享的系统DLL、其他共享内存区域;而任务管理器的「专用工作集」是进程实打实独占的、没被其他进程共用的物理内存部分,两者统计的不是同一个东西,数值自然有差距。

正确的获取方式

要拿到和任务管理器完全匹配的「Private Working Set」数值,你需要用psutil的memory_full_info()方法里的private属性(这个字段是Windows系统下专门对应专用工作集的)。

代码示例:获取内存占用最高的前5个进程

下面是直接可用的代码,能列出内存占用Top5的进程及其专用工作集大小:

import psutil

def get_top_private_memory_processes(top_n=5):
    process_list = []
    # 遍历所有进程,过滤无权限访问的进程
    for proc in psutil.process_iter(['pid', 'name']):
        try:
            # 获取完整内存信息,重点取private字段
            full_mem_info = proc.memory_full_info()
            private_mem_bytes = full_mem_info.private
            # 转换为MB,和任务管理器显示单位一致
            private_mem_mb = round(private_mem_bytes / (1024 * 1024), 2)
            process_list.append({
                'pid': proc.info['pid'],
                'name': proc.info['name'],
                'private_working_set': f"{private_mem_mb} MB"
            })
        except (psutil.NoSuchProcess, psutil.AccessDenied):
            # 跳过已结束或无权限的进程
            continue
    # 按专用工作集从高到低排序,取前top_n个
    sorted_processes = sorted(process_list, key=lambda x: float(x['private_working_set'].split()[0]), reverse=True)[:top_n]
    return sorted_processes

# 打印结果
top_processes = get_top_private_memory_processes(5)
print("内存占用最高的前5个进程(专用工作集):")
for index, proc in enumerate(top_processes, start=1):
    print(f"{index}. 进程名: {proc['name']} | PID: {proc['pid']} | 专用工作集: {proc['private_working_set']}")

小提示

  • 代码里处理了NoSuchProcess和AccessDenied异常,避免因为进程突然结束或权限不足导致程序崩溃;
  • 转换为MB单位是为了和任务管理器的默认显示保持一致,方便对比;
  • 如果是在Linux系统下,private字段对应的是私有内存,和Windows的统计逻辑略有不同,但在Windows上完全匹配任务管理器的「专用工作集」。

内容的提问来源于stack exchange,提问作者Spencer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:33:45