timeMethod¶
-
lsst.utils.timer.
timeMethod
(_func: Optional[Any] = None, *, metadata: Optional[MutableMapping[KT, VT]] = None, logger: Optional[logging.Logger] = None, logLevel: int = 10) → Callable¶ Measure duration of a method.
Parameters: - func
The method to wrap.
- metadata :
collections.abc.MutableMapping
, optional Metadata to use as override if the instance object attached to this timer does not support a
metadata
property.- logger :
logging.Logger
, optional Logger to use when the class containing the decorated method does not have a
log
property.- logLevel :
int
, optional Log level to use when logging messages. Default is
DEBUG
.
Notes
Writes various measures of time and possibly memory usage to the metadata; all items are prefixed with the function name.
Warning
This decorator only works with instance methods of any class with these attributes:
metadata
: an instance ofcollections.abc.Mapping
. Theadd
method will be used if available, else entries will be added to a list.log
: an instance oflogging.Logger
or subclass.
Examples
To use:
import lsst.utils as utils import lsst.pipe.base as pipeBase class FooTask(pipeBase.Task): pass @utils.timeMethod def run(self, ...): # or any other instance method you want to time pass