LSST Applications  22.0.1,22.0.1+01bcf6a671,22.0.1+046ee49490,22.0.1+05c7de27da,22.0.1+0c6914dbf6,22.0.1+1220d50b50,22.0.1+12fd109e95,22.0.1+1a1dd69893,22.0.1+1c910dc348,22.0.1+1ef34551f5,22.0.1+30170c3d08,22.0.1+39153823fd,22.0.1+611137eacc,22.0.1+771eb1e3e8,22.0.1+94e66cc9ed,22.0.1+9a075d06e2,22.0.1+a5ff6e246e,22.0.1+a7db719c1a,22.0.1+ba0d97e778,22.0.1+bfe1ee9056,22.0.1+c4e1e0358a,22.0.1+cc34b8281e,22.0.1+d640e2c0fa,22.0.1+d72a2e677a,22.0.1+d9a6b571bd,22.0.1+e485e9761b,22.0.1+ebe8d3385e
LSST Data Management Base Package
Classes | Functions
lsst.pipe.base.cmdLineTask Namespace Reference

Classes

class  TaskRunner
 
class  LegacyTaskRunner
 
class  ButlerInitializedTaskRunner
 
class  CmdLineTask
 

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.:

.. code-block:: python

    with profile(filename) as prof:
        runYourCodeHere()

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

.. code-block:: bash

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

Definition at line 50 of file cmdLineTask.py.

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