通过命令行获取CPU使用时间
如何仅通过命令行使用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 foo 和 import foo.__main__ 在计时方面是否有差异,但希望能够对结果进行适当的筛选。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。