【问题标题】:Python tracing and profilingPython 跟踪和分析
【发布时间】:2013-04-03 02:44:32
【问题描述】:

我正在寻找同时分析和跟踪 python 代码。我见过 python trace 和 traceback 类,也见过 python Cprofiler 和 profiler 类。

跟踪库不包含有关函数运行时间和内存量的信息,Cprofiler 库不显示每次调用该函数所花费的时间,也不显示应用程序就像跟踪一样。我正在寻找的是类似于 xdebug for php 的东西。

python

提前致谢

【问题讨论】:

    标签: python profile trace


    【解决方案1】:

    你看过profile,文档here

    也看看here:

    可视化分析结果

    RunSnakeRun 是 Mike Fletcher 的一个 GUI 工具,它使用方形地图可视化来自 cProfile 的配置文件转储。函数/方法调用可以根据各种标准进行排序,源代码可以与可视化和调用统计一起显示。

    示例用法:

    runsnake some_profile_dump.prof
    

    Gprof2Dot 是一个基于 python 的工具,可以将分析结果输出转换为可以转换为 PNG 图像或 SVG 的图形。

    使用 python 2.5 的典型分析会话如下所示(在旧平台上,您需要使用实际脚本而不是 -m 选项):

    python -m cProfile -o stat.prof MYSCRIPY.PY [ARGS...]
    python -m pbp.scripts.gprof2dot -f pstats -o stat.dot stat.prof
    dot -ostat.png -Tpng stat.dot
    

    PyCallGraph pycallgraph 是一个 Python 模块,它为 Python 程序创建调用图。它会生成一个 PNG 文件,显示模块的函数调用及其与其他函数调用的链接、函数被调用的次数以及在该函数中花费的时间。

    典型用法:

    pycallgraph scriptname.py
    

    PyProf2CallTree 是一个脚本,可帮助使用 kcachegrind 图形调用树分析器可视化使用 cProfile python 模块收集的分析数据。

    典型用法:

    python -m cProfile -o stat.prof MYSCRIPY.PY [ARGS...]
    python pyprof2calltree.py -i stat.prof -k
    

    【讨论】:

    • 除非我错过了探查器中的某些内容,否则它会显示该函数被调用的次数以及发生了多少使用,但它不会显示每次调用该函数以及在它之前调用了什么就像一个堆栈跟踪。
    • @WojonsTech 不幸的是,这是正确的。问题是profile 模块只存储了 gprof2dot 等工具显示的图形的边和节点。如果 A 调用 B 和 C,B 和 C 都调用 D,并且 D 调用 E,通常不可能确切知道 E 的时间是由于 B 与 C 造成的。为了获得额外的信息,必须使用不同的分析器用过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2017-06-03
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多