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

如何测量Python子进程的内存使用情况?

获取Python子进程的内存使用量

方法一:使用psutil库(推荐)

psutil是跨平台的系统监控库,能精准获取进程内存数据,操作简单。

  1. 先安装库:
pip install psutil
  1. 代码实现(支持实时监控或获取最终内存):
import subprocess
import psutil
import time

# 启动子进程(替换为你的目标命令,尽量避免shell=True,防止额外shell进程干扰)
proc = subprocess.Popen(["your_command_here"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

# 关联psutil进程实例
ps_proc = psutil.Process(proc.pid)

# 可选:实时监控内存,直到进程结束
while proc.poll() is None:
    mem_info = ps_proc.memory_info()
    # 转换为MB单位输出
    rss_mb = mem_info.rss / (1024 * 1024)  # 物理内存占用(常驻内存)
    vms_mb = mem_info.vms / (1024 * 1024)  # 虚拟内存占用
    print(f"子进程当前RSS内存: {rss_mb:.2f} MB, VMS内存: {vms_mb:.2f} MB")
    time.sleep(1)

# 进程结束后获取最终内存数据
final_mem = ps_proc.memory_info()
print(f"子进程最终RSS内存: {final_mem.rss/(1024*1024):.2f} MB")

# 读取子进程输出(如果需要)
out, err = proc.communicate()

方法二:不依赖第三方库,用系统原生命令

如果不想额外安装库,可根据系统类型用对应命令获取内存:

Linux/macOS 版本

import subprocess

# 启动子进程
proc = subprocess.Popen(["your_command_here"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc.wait()

# 用ps命令提取进程内存(RSS,单位KB)
rss_kb = int(subprocess.check_output(["ps", "-o", "rss=", "-p", str(proc.pid)]).decode().strip())
print(f"子进程RSS内存: {rss_kb/1024:.2f} MB")

# 读取输出
out, err = proc.communicate()

Windows 版本

import subprocess
import re

# 启动子进程
proc = subprocess.Popen(["your_command_here"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc.wait()

# 用tasklist提取内存数据
task_output = subprocess.check_output(["tasklist", "/FI", f"PID eq {proc.pid}", "/FO", "CSV"]).decode()
# 解析CSV格式的内存列(单位KB)
for line in task_output.splitlines()[1:]:
    parts = line.split(',')
    if len(parts) >= 5:
        mem_kb = int(parts[4].replace('"', '').replace(' K', ''))
        print(f"子进程内存: {mem_kb/1024:.2f} MB")
        break

# 读取输出
out, err = proc.communicate()

关键注意事项

  • 尽量避免使用shell=True:会额外启动shell进程(如bash),此时获取的PID是shell的PID,而非目标进程。如果必须用,可通过ps_proc.children()[0]获取shell的子进程(即目标进程)再监控内存。
  • rss是进程实际占用的物理内存,vms是虚拟内存,可根据需求选择监控指标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:15:34