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

如何提升Python cProfile输出的时间分辨率以查看短耗时代码?

解决cProfile输出小数位数不足的问题

cProfile默认输出仅保留3位小数,要查看更精细的耗时数据,可通过pstats模块自定义输出格式,以下是两种可行方案:

方案1:保存统计文件后再处理

先将性能分析结果保存到文件,再用pstats加载并指定小数位数:

import cProfile
import pstats
import numpy as np
from scipy import signal

def prof_func():
    x = 100
    y = 100
    a = np.random.rand(x,y)
    c = signal.convolve2d(a, a, boundary='symm', mode='same')

# 运行分析并保存结果
cProfile.run('prof_func()', 'profile_data')

# 加载统计数据并设置6位小数输出
stats = pstats.Stats('profile_data')
stats.sort_stats('time')  # 按耗时排序
stats.print_stats(6)  # 参数指定小数位数,默认3位

方案2:实时分析并自定义输出

无需保存文件,直接在代码中完成分析和自定义输出:

import cProfile
import pstats
import numpy as np
from scipy import signal

def prof_func():
    x = 100
    y = 100
    a = np.random.rand(x,y)
    c = signal.convolve2d(a, a, boundary='symm', mode='same')

pr = cProfile.Profile()
pr.enable()
prof_func()
pr.disable()

# 生成统计对象并设置小数位数
stats = pstats.Stats(pr)
stats.sort_stats('cumulative')
stats.print_stats(6)

说明

pstats.Stats.print_stats()方法的第一个参数可指定输出的小数位数,你可以根据需求调整(比如6位、9位),这样就能显示np.random.rand这类短耗时操作的真实数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:45:34