gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 02:43:16 25 4
gpt4 key购买 nike

在我的工作中,我经常编写代码来从文件中读取行,并且一次处理这些行。

有时候行处理比较复杂,文件比较长,比如今天处理200行大概需要一分钟,文件总行数175k。

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

问题是我实际上无法运行整个代码,因为这会花费太长时间,而且如果我在退出信号的中途中断进程,那么我 cProfiler 也会死掉,而不会生成报告并修改带有死逻辑的代码在一定的阅读之后,只有前 K 行很烦人(因为我在工作中对不同类型的数据倾向于这种事情。)如果可能的话,我想避免仅仅为了分析而添加选项。

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

最佳答案

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

关于python - 如何在不修改用户代码的情况下超时使用 cProfiler 分析代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com