通过命令行获取CPU使用时间

编程语言 2026-07-09

如何仅通过命令行使用cProfile获取CPU时间?我的Python文件是自动生成的,所以我想避免修改它们。

$ python3 -m cProfile
Usage: cProfile.py [-o output_file_path] [-s sort] [-m module | scriptfile] [arg]

这段没有说明 [arg] 的含义,或者它是否适用。

MWE

$ mkdir foo
$ touch foo/__main__.py
$ python3 -m cProfile -m foo
         805 function calls (803 primitive calls) in 0.000 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
      2/1    0.000    0.000    0.000    0.000 {built-in method builtins.exec}
        1    0.000    0.000    0.000    0.000 <string>:1(<module>)
        1    0.000    0.000    0.000    0.000 <frozen runpy>:201(run_module)
      2/1    0.000    0.000    0.000    0.000 <frozen runpy>:105(_get_module_details)
        ...

解决方案

部分解答,前提是 foo.__main__ 没有使用 __name__

我可以直接对加载模块进行计时,按照 这个回答 的做法。

import cProfile, time

p = cProfile.Profile(timer=time.process_time)
p.run("import foo.__main__")
p.dump_stats("prof")

这已经足以避免修改 foo,但我也可以完全在命令行上实现,使用 -c

python3 -c "import cProfile, time; p = cProfile.Profile(timer=time.process_time); p.run('import foo.__main__'); p.dump_stats('prof')"

我不太清楚 python3 -m fooimport foo.__main__ 在计时方面是否有差异,但希望能够对结果进行适当的筛选。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章