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

如何测量单个Python脚本运行时的CPU与内存占用?

测量Python脚本的CPU与内存占用方法

1. 安装psutil库

首先确保安装了psutil:

pip install psutil

2. 核心思路:监控当前进程的状态

psutil通过psutil.Process()获取当前Python进程的实例,只需要在脚本开头初始化一次,后续用这个实例查询不同阶段的资源状态即可——不需要每次查询都重新初始化。

3. 内存占用测量(基础版)

通过对比业务代码执行前后的内存状态,得到代码段的内存消耗:

import psutil

# 初始化当前进程对象
process = psutil.Process()

# 记录执行前的物理内存(RSS:实际占用的物理内存,单位字节)
mem_before = process.memory_info().rss

# --------------------------
# 你的业务代码
a = 5
b = 6
c = 3
result = (a * b) + c
print(result)
# --------------------------

# 记录执行后的物理内存
mem_after = process.memory_info().rss

# 转换为MB单位输出
print(f"内存占用变化: {(mem_after - mem_before) / 1024 / 1024:.2f} MB")

4. CPU资源测量

CPU消耗可以通过对比执行前后的CPU时间(用户态+系统态耗时)来计算:

import psutil

process = psutil.Process()

# 记录执行前的CPU时间(user是用户态耗时,system是系统态耗时)
cpu_times_before = process.cpu_times()

# --------------------------
# 你的业务代码
a = 5
b = 6
c = 3
result = (a * b) + c
print(result)
# --------------------------

cpu_times_after = process.cpu_times()

# 计算总CPU耗时
cpu_total_used = (cpu_times_after.user - cpu_times_before.user) + (cpu_times_after.system - cpu_times_before.system)
print(f"CPU总耗时: {cpu_total_used:.4f} 秒")

5. 复杂场景:监控内存峰值

如果你的代码是循环、批量处理等内存波动大的场景,可以实时采样记录峰值内存:

import psutil

process = psutil.Process()
mem_peak = 0

# --------------------------
# 模拟复杂业务代码(循环生成数据)
for i in range(10000):
    # 模拟临时内存占用
    temp_data = [i] * 10000
    # 实时检查当前内存,更新峰值
    current_mem = process.memory_info().rss
    if current_mem > mem_peak:
        mem_peak = current_mem
    # 释放临时数据
    del temp_data
# --------------------------

print(f"内存峰值: {mem_peak / 1024 / 1024:.2f} MB")

6. psutil与tracemalloc的区别

  • psutil:监控整个进程的系统级资源使用,适合快速获取整体CPU、内存占用,无需关注内存分配细节。
  • tracemalloc:跟踪Python内部的内存分配,能定位到具体哪行代码分配了内存,适合内存泄漏排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:01:27