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

如何通过cProfile获取墙钟时间?tottime是否为墙钟时间?

用cProfile获取墙钟时间的正确姿势

先明确:cProfile默认不用墙钟时间

cProfile默认统计的是进程CPU时间——也就是程序实际占用CPU干活的时间,像等待IO、休眠这些CPU不工作的时间是不算的。墙钟时间是真实世界的流逝时间,和这个完全不是一回事。

tottime这类数值默认不是墙钟时间

别搞混了:

  • tottime:是函数自身执行消耗的CPU时间(不含调用子函数的时间)
  • cumtime:是函数加所有子函数总共消耗的CPU时间
    只有你切换到墙钟时间计时后,这些数值才会对应墙钟时间的统计结果。

命令行下切换到墙钟时间的两种方法

你用的是python3 -m cProfile,直接用下面两种方法就行:

方法1:临时设置环境变量

运行命令时加个环境变量指定计时器为time.time(Python自带的墙钟时间函数):

PYTHONPROFILETIMER=time.time python3 -m cProfile your_script.py

方法2:写个简单的包装脚本(适合频繁用的情况)

要是不想每次都敲环境变量,写个小脚本profile_wall.py:

import cProfile
import sys
import time

# 强制用墙钟时间计时
cProfile.run('exec(open(sys.argv[1]).read())', timer=time.time)

然后运行你的脚本:

python3 profile_wall.py your_script.py

怎么确认生效了?

找个带time.sleep(1)的测试脚本试试:默认情况下,cProfile统计的总时间不会包含这1秒的休眠时间;切换到墙钟时间后,总时间会多出来这1秒,一眼就能看出来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 15:04:52