【问题标题】:How to remove library modules or specific functions from pycallgraph如何从 pycallgraph 中删除库模块或特定函数
【发布时间】:2013-08-14 17:19:08
【问题描述】:

我正在使用pycallgraph 来分析我的代码性能。但是,调用图非常混乱,有许多对系统函数的调用以及我不想记录的某些函数。如何阻止 pycallgraph 报告这些调用?

【问题讨论】:

    标签: python performance-testing call-graph


    【解决方案1】:

    Pycallgraph 提供过滤功能来过滤掉您想从调用图中排除的任何模块、类或函数。应该在开始跟踪之前定义以下函数并传递给 pycallgraph

    例子

    def filtercalls(call_stack, modul, clas, func, full):
        mod_ignore = ['shutil','scipy.optimize','re','os','sys','json']
        func_ignore = ['CustomFunctionName','pdbcall']
        clas_ignore = ['pdb']
        return modul not in mod_ignore and func not in func_ignore and clas not in clas_ignore
    

    pycallgraph 跟踪开始是

    pycallgraph.start_trace(filter_func=filtercalls)
    

    这样,您在过滤器调用中提供的任何模块、类或函数都将被删除。请注意,在标准库中仅仅提供模块名称是不够的。因此,在 mod_ignore 中包含 numpy 仍然会导致 numpy.core 被包含

    【讨论】:

      猜你喜欢
      • 2022-10-19
      • 2016-09-23
      • 2015-09-16
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 2012-08-22
      相关资源
      最近更新 更多