当前位置:  开发笔记 > 编程语言 > 正文

如何在不修改用户代码的情况下使使用cProfiler分析的代码超时?

如何解决《如何在不修改用户代码的情况下使使用cProfiler分析的代码超时?》经验,为你挑选了1个好方法。

通常在工作期间,我编写代码以从文件中读取行,然后一次处理这些行。

有时,行处理很复杂且文件很长,例如,今天处理200行需要大约一分钟的时间,文件中的总行数为175k。

我想弄清楚我的代码的哪一部分要花很长时间,为此,我决定在Python中使用cProfiler。

问题是我实际上无法运行整个代码,因为这将花费很长时间,并且如果我在退出信号中途中断​​了该过程,那么我的cProfiler也将死掉,而不会生成报告并修改逻辑以使代码在确定的时间内死掉仅读取前K行很烦人(因为我经常在工作中针对不同类型的数据进行此类操作。)我想避免仅出于分析目的而添加选项。

告诉cProfiler运行3分钟,分析发生的情况,停止然后报告其发现,最干净的方法是什么?



1> 小智..:

步骤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上无效。)另外,在任何系统上,您都应该能够

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)"

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有