Python代码调试技巧:生成调用图表

Python代码调试技巧

文章目录

  • Python代码调试技巧
    • 1 pycharm Profile
    • 2 使用pycallgraph绘制函数调用图

1 pycharm Profile

菜单栏“run"选项中Profile <当期脚本>,则运行程序并生成类似与MATLAB分析文件一样的时间分析表,可以查看各个函数的运行时间,同时生成Call Graph图表。
点击Call Graph图表中的方框,可以直接调到对应的函数位置

可以另存为png图片
Python代码调试技巧:生成调用图表_第1张图片

2 使用pycallgraph绘制函数调用图

要使用pycallgraph,必须是运行模式,不能是调试模式

# generate graph
from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput
from pycallgraph import Config
from pycallgraph import GlobbingFilter

if __name__ == "__main__":
    if False: #如果绘制关系图
        config = Config()
        # 关系图中包括(include)哪些函数名。
        # 如果是某一类的函数,例如类gobang,则可以直接写'gobang.*',表示以gobang.开头的所有函数。(利用正则表达式)。
        # config.trace_filter = GlobbingFilter(
        #     include=['main',
        #              'run',
        #              'frame_callback',
        #              'create_detections',
        #              'gather_sequence_info'
        #              ])
        config.trace_filter=GlobbingFilter() #模式情况下绘制所有调用的函数
        # 该段作用是关系图中不包括(exclude)哪些函数。(正则表达式规则)
        # config.trace_filter = GlobbingFilter(exclude=[
        #     'pycallgraph.*',
        #     '*.secret_function',
        #     'FileFinder.*',
        #     'ModuleLockManager.*',
        #     'SourceFilLoader.*'
        # ])
        graphviz = GraphvizOutput()
        graphviz.output_file = 'graph.png'
        with PyCallGraph(output=graphviz, config=config):
            main()
    else:
        main()

Python代码调试技巧:生成调用图表_第2张图片

你可能感兴趣的:(Python)