通常在我的工作中,我会编写代码来读取文件中的行,然后我一次处理这些行。
有时行处理很复杂且文件很长,例如,今天处理200行大约需要一分钟,文件中的总行数是175k。
我想知道我的代码的哪一部分花了很长时间,为此我决定在Python中使用cProfiler。
问题是我实际上无法运行整个代码,因为这需要太长时间,如果我在退出信号中途中断该过程,那么我cProfiler也会在没有生成报告和修改代码的情况下死掉经过一定的阅读后,只有前K行是令人讨厌的(因为我在工作中对不同类型的数据倾向于这种事情。)我想避免在可能的情况下为了分析而添加选项。
告诉cProfiler运行3分钟最简单的方法是什么,描述发生了什么,停止然后报告其结果?
答案 0 :(得分:5)
步骤1:在探查器下运行脚本myscript.py
3分钟,将分析信息输出到文件prof
。在Linux等上,您可以使用
timeout -s INT 3m python -m cProfile -o prof myscript.py
(注意:如果省略-s INT
,则使用SIGTERM而不是SIGINT,这似乎适用于Python 2,但不适用于Python 3.)或者,在任何系统上,您都应该能够1 p>
python -m cProfile -o prof myscript.py
然后在3分钟结束时按Ctrl-C。
第2步:从prof
文件中获取一些类似
python -c "import pstats; pstats.Stats('prof').sort_stats('time').print_stats(20)"