lsst.utils.timer.logInfo(obj: Any, prefix: str, logLevel: int = 10, metadata: MutableMapping | None = None, logger: Logger | LsstLogAdapter | None = None, stacklevel: int | None = None) None

Log timer information to obj.metadata and obj.log.


An object with both or one these two attributes:

  • metadata a dict-like container for storing metadata. Can use the add(name, value) method if found, else will append entries to a list.

  • log an instance of logging.Logger or subclass.

If None, at least one of metadata or logger should be passed or this function will do nothing.


Name prefix, the resulting entries are CpuTime, etc.. For example timeMethod uses prefix = Start when the method begins and prefix = End when the method ends.


Log level (a logging level constant, such as logging.DEBUG).

metadatacollections.abc.MutableMapping, optional

Metadata object to write entries to, overriding obj.metadata.

loggerlogging.Logger or lsst.utils.logging.LsstLogAdapter

Log object to write entries to, overriding obj.log.

stacklevelint, optional

The stack level to pass to the logger to adjust which stack frame is used to report the file information. If None the stack level is computed such that it is reported as the first package outside of the utils package. If a value is given here it is adjusted by 1 to account for this caller.


Logged items include:

  • Utc: UTC date in ISO format (only in metadata since log entries have timestamps).

  • CpuTime: System + User CPU time (seconds). This should only be used

    in differential measurements; the time reference point is undefined.

  • MaxRss: maximum resident set size. Always in bytes.

All logged resource information is only for the current process; child processes are excluded.

The metadata will be updated with a __version__ field to indicate the version of the items stored. If there is no version number it is assumed to be version 0.

  • Version 0: MaxResidentSetSize units are platform-dependent.

  • Version 1: MaxResidentSetSize will be stored in bytes.