我正在使用 cProfile
尝试分析我的代码:
pr = cProfile.Profile()
pr.enable()
my_func() # the code I want to profile
pr.disable()
pr.print_stats()
但是结果太长,无法在Spyder终端完整显示(看不到运行时间最长的函数调用。。。)。我也尝试使用保存结果
cProfile.run('my_func()','profile_results')
但输出文件不是人类可读的格式(尝试使用和不使用 .txt
后缀)。
所以我的问题是如何将分析结果保存到人类可读的外部文件中(例如 .txt
格式,所有单词都正确显示)?
原文由 Physicist 发布,翻译遵循 CC BY-SA 4.0 许可协议
更新。 您可以使用 io.StringIO() 获取探查器的输出并将其保存到文件中。这是一个例子:
运行我们的脚本并打开
test.txt
。您将看到可读的结果:我也可以推荐使用 dump_stats + pstats.Stats 。这是一个如何使用它的例子。文件结构:
示例 包 - 让我们想象这是某种应用程序逻辑。
现在让我们运行服务器(
python3 test_ex.py
)并打开http://localhost:8083/test
。几秒钟后你会看到很长的 json。之后,您将在项目文件夹中看到 profile_dump 文件。现在在项目文件夹中运行 python live interpreter 并使用 pstats 打印我们的转储:您还可以轻松排序结果:
希望这可以帮助。