def run(name, trace_grouper=None, config=None, comment=None): if not config: config = Config() config.trace_filter = GlobbingFilter() if trace_grouper is not None: config.trace_grouper = trace_grouper graphviz = GraphvizOutput() graphviz.output_file = "grouper-{}.png".format(name) if comment: graphviz.graph_attributes["graph"]["label"] = comment with PyCallGraph(config=config, output=graphviz): example_with_submodules.main()
try: from pycallgraph import PyCallGraph from pycallgraph import Config from pycallgraph import GlobbingFilter from pycallgraph import Grouper from pycallgraph.output import GraphvizOutput except ImportError: print "You need to install pycallgraph (for instance with `pip install pycallgraph`)." raise from run_finmag import run_simulation config = Config() config.trace_grouper = Grouper(groups=[ "finmag.util.*", "finmag.integrators.*", "finmag.energies.*", "finmag.sim.*", ]) # `max_depth`=15 is the level that would account for all calls to # Exchange.__compute_field_petsc; 14 would miss those from TableWriter.save config.trace_filter = GlobbingFilter(include=[ 'finmag.*', 'run_finmag.*', ]) graphviz = GraphvizOutput(output_file='finmag_callgraph.png') with PyCallGraph(output=graphviz, config=config): run_simulation()
#################### PyCallGraph from pycallgraph import PyCallGraph from pycallgraph import GlobbingFilter from pycallgraph import Config from pycallgraph import Grouper from pycallgraph.output import GraphvizOutput config = Config() # needed to group by submodules config.trace_grouper = Grouper(groups=[ "csv2df.reader.*" , "csv2df.parser.*" , "csv2df.emitter.*" , "csv2df.validator.*" , # currently not used "csv2df.runner.*" , 'csv2df.util_row_splitter.*', 'csv2df.specification.*', ]) config.trace_filter = GlobbingFilter config.trace_filter = GlobbingFilter(exclude=[ 'csv2df.util_row_splitter.*', 'csv2df.specification.*', "csv2df.reader.*" , "config.*" , ])