Profiling and Tracing
Profiling and Tracing¶
The profiling and call tracing tools mentioned above have a similar programmatic interface, even though most of the time they will only be used in command-line mode. However, if you really want to customize the set of methods that are to be profiled or traced, see the following example.
# for performance profiling from openmdao.devtools import iprofile as tool # OR for call tracing # from openmdao.devtools import itrace as tool # First, make sure that the classes I use to define my method set exist in this # namespace. from mystuff import MyClass, MyOtherClass # Let's say I only want to track methods with 'foo' or 'bar' in the name that belong to # MyClass and ones with 'baz' in the name that belong to either MyClass or MyOtherClass. # I use the following glob patterns and tuples of classes to specify this. methods = [ ('*foo*', (MyClass,)), ('*bar*', (MyClass,)), ('*baz*', (MyClass, MyOtherClass)) ] # set up the tool using my custom method set tool.setup(methods=methods) tool.start() # run the code I want to profile/trace... tool.stop() # do some other stuff that I don't want to profile/trace...