Domanda

I am using pycallgraph to analyze my code performance. However, the call graph is pretty messy with many calls to system functions as well as certain functions I would not like to document. How can I stop pycallgraph from reporting these calls?

È stato utile?

Soluzione

Pycallgraph provides filtering capabilities to filter out any module, class or function you would like to exclude from call graph. Following function should be defined before you start the trace and passed to pycallgraph

Example

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

The pycallgraph trace start is

pycallgraph.start_trace(filter_func=filtercalls)

This way, any module, class or function you provide in filtercalls will be removed. Please note that many time in standard libraries providing just the module name is not enough. Thus, including numpy in mod_ignore will still result in numpy.core being included

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top