我在名为bot4CA.py的模块上使用cProfile,所以在控制台中输入:
python -m cProfile -o thing.txt bot4CA.py
模块运行并退出后,它会创建一个名为thing.txt的文件,当我打开它时,那里有一些信息,其余的是混乱的字符而不是整齐的数据文件,这就是我想。有没有人知道如何使用cProfile并最终得到整齐有序的数据表,比如在命令行中正常使用它,除了在文件中? 以下是.txt文件中某些数据的示例:
{( s) build\bdist.win32\egg\colorama\winterm.pyi' t reset_all( i i gpàÂs% ?geOÙHÌœE?{( s- build\bdist.win32\egg\colorama\ansitowin32.pyi¥
我真正想要的是当您调用cProfile.run()时会发生什么,这会导致打印整齐有序的表格,显示所有功能的执行时间,而不是打印,保存在文件中,因为此程序相当大并且运行了很多功能。
答案 0 :(得分:55)
您应该使用pstats
模块来解析此文件,并从中提取用户友好格式的信息。例如:
import pstats
p = pstats.Stats('thing.txt')
p.sort_stats('cumulative').print_stats(10)
当然,这都是in the documentation。在那里阅读“即时用户手册”,它解释了一切。
答案 1 :(得分:4)
直接丢弃统计信息:
echo 'stats' | python3 -m pstats path/to/cprofile_output_file
pstats也有一个外壳
$ python3 -m pstats path/to/cprofile_output_file
我们可以像这样发出stats
或sort
命令:
$ python3 -m pstats path/to/cprofile_output_file
Welcome to the profile statistics browser.
prof.txt% sort cumtime
prof.txt% reverse
prof.txt% stats
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 63:1(<module>)
1 0.000 0.000 0.000 0.000 {built-in method builtins.exec}
1 0.000 0.000 0.000 0.000 {built-in method builtins.print}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
prof.txt% ?
Documented commands (type help <topic>):
========================================
EOF add callees callers help quit read reverse sort stats strip
我在这里喜欢的一个微功能是我可以自然地反转排序顺序<3
echo -e 'sort cumtime\nreverse\nstats' | python3 -m pstats path/to/cprofile_output_file