lsst.utils.timer.profile(filename: str | None, log: LsstLoggers | None = None) Iterator[cProfile.Profile | None]

Profile the enclosed code block and save the result to a file.

filenamestr or None

Filename to which to write profile (profiling disabled if None or empty string).

loglogging.Logger or lsst.utils.logging.LsstLogAdapter, optional

Log object for logging the profile operations.

profcProfile.Profile or None

If profiling is enabled, the context manager returns the cProfile.Profile object (otherwise it returns None), which allows additional control over profiling.


You can obtain the cProfile.Profile object using the “as” clause, e.g.:

with profile(filename) as prof:

The output cumulative profile can be printed with a command-line like:

python -c 'import pstats;             pstats.Stats("<filename>").sort_stats("cumtime").print_stats(30)'