LSSTApplications  20.0.0
LSSTDataManagementBasePackage
Classes | Functions
lsst.pipe.base.cmdLineTask Namespace Reference

Classes

class  ButlerInitializedTaskRunner
 
class  CmdLineTask
 
class  LegacyTaskRunner
 
class  TaskRunner
 

Functions

def profile (filename, log=None)
 

Function Documentation

◆ profile()

def lsst.pipe.base.cmdLineTask.profile (   filename,
  log = None 
)
Context manager for profiling with cProfile.


Parameters
----------
filename : `str`
    Filename to which to write profile (profiling disabled if `None` or empty).
log : `lsst.log.Log`, optional
    Log object for logging the profile operations.

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 this using
the "as" clause, e.g.:

    with profile(filename) as prof:
        runYourCodeHere()

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)'

Definition at line 49 of file cmdLineTask.py.

49 def profile(filename, log=None):
50  """Context manager for profiling with cProfile.
51 
52 
53  Parameters
54  ----------
55  filename : `str`
56  Filename to which to write profile (profiling disabled if `None` or empty).
57  log : `lsst.log.Log`, optional
58  Log object for logging the profile operations.
59 
60  If profiling is enabled, the context manager returns the cProfile.Profile object (otherwise
61  it returns None), which allows additional control over profiling. You can obtain this using
62  the "as" clause, e.g.:
63 
64  with profile(filename) as prof:
65  runYourCodeHere()
66 
67  The output cumulative profile can be printed with a command-line like::
68 
69  python -c 'import pstats; pstats.Stats("<filename>").sort_stats("cumtime").print_stats(30)'
70  """
71  if not filename:
72  # Nothing to do
73  yield
74  return
75  from cProfile import Profile
76  profile = Profile()
77  if log is not None:
78  log.info("Enabling cProfile profiling")
79  profile.enable()
80  yield profile
81  profile.disable()
82  profile.dump_stats(filename)
83  if log is not None:
84  log.info("cProfile stats written to %s", filename)
85 
86 
lsst.pipe.base.cmdLineTask.profile
def profile(filename, log=None)
Definition: cmdLineTask.py:49