import os

procs = []
for pid in filter(str.isdigit, os.listdir('/proc')):
    try:
        info = {}
        with open(f'/proc/{pid}/status') as f:
            for line in f:
                k, _, v = line.partition(':')
                info[k] = v.strip()
        mem = int(info.get('VmRSS', '0 kB').split()[0])
        procs.append((mem, pid, info.get('Name', '?')))
    except (FileNotFoundError, ProcessLookupError, PermissionError):
        pass

procs.sort(reverse=True)
print(f"当前共 {len(procs)} 个进程,内存占用前 8 名:\n")
print(f"{'PID':>7}  {'内存(MB)':>9}  进程名")
for mem, pid, name in procs[:8]:
    print(f"{pid:>7}  {mem/1024:>9.1f}  {name}")
