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

如何限制cProfile输出仅展示自有代码?可设置调用日志层级吗?

cProfile自定义输出范围的实现方案

你提到的两类需求都可以通过pstats模块的过滤、定向查询功能实现,具体操作如下:

1. 仅展示自有代码的调用统计

不用直接调用print_stats输出全量结果,先实例化pstats.Stats对象后添加过滤规则即可:

import cProfile
import pstats
from pathlib import Path

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

# 初始化统计对象
stats = pstats.Stats(pr)
# 过滤规则示例:仅保留当前脚本内的函数调用,排除内置函数、第三方库调用
current_script = Path(__file__).name
stats.filter(lambda stat_entry: current_script in stat_entry.filename)
# 排序后输出结果
stats.sort_stats('time').print_stats()

如果只需要和testrun相关的条目,把过滤规则替换为lambda stat_entry: 'testrun' in stat_entry.name即可。

2. 限制展示的调用层级

原生pstats没有直接的层级参数,但可以通过定向查询调用关系实现层级限制:

  • 若要查看2级调用(仅testrun本身+它直接调用的函数),使用print_callees方法:
    stats.sort_stats('time').print_callees('testrun')
    
  • 若要查看3级调用,再额外查询上一步返回的所有被调函数的下级调用即可。

如果需要更灵活的查询,可以先把统计结果导出到本地文件:pr.dump_stats('profile_result.prof'),之后在终端执行python -m pstats profile_result.prof进入交互式统计界面,可直接输入过滤、排序、层级查询命令操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:45:04