如何不修改生成的Python文件,仅通过命令行用cProfile获取CPU时间?
用cProfile命令行分析CPU时间(无需修改代码)
我想纯靠命令行用cProfile统计CPU时间,因为我的Python文件是自动生成的,不想动它。运行python3 -m cProfile后得到用法提示:
$ python3 -m cProfile Usage: cProfile.py [-o output_file_path] [-s sort] [-m module | scriptfile] [arg]
但提示里没说[arg]是什么意思,也没说能不能用。下面是最小复现示例:
$ 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) ...
关于[arg]的说明
[arg]是传递给你要分析的脚本或模块的命令行参数,不管你用-m module模式还是直接指定脚本文件,都可以添加这些参数:
- 若分析单个脚本:
python3 -m cProfile my_auto_script.py param1 param2,这里的param1和param2会被脚本通过sys.argv读取 - 若分析模块(如示例中的
foo):python3 -m cProfile -m foo param1 param2,这些参数会被foo/__main__.py通过sys.argv获取
这些参数不会干扰cProfile的性能统计功能,只是原样传递给目标代码,刚好满足你不想修改自动生成文件的需求。
内容的提问来源于stack exchange,提问作者joel
相关产品推荐
相关产品推荐

