Python Performance Tools
Simple utilities to make it easier to track performance of Python programs under normal operations
Context Managers
DisplayElapsed
This context manager makes it easy to display console-oriented start/end messages with end-user tolerable formatting.
Usage:
with DisplayElapsed("{now} uploading {filename} (original: {original})\n", "{now} uploaded {filename} in {elapsed:.1f} seconds", filename=remote_path, original=local_path): upload_filename(…)
Notes:
- DisplayElapsed takes one positional argument:
message
. The message is formatted using str.format with the values{now}
and{elapsed}
provided automatically. All other keyword arguments provided toDisplayElapsed
will be available during formatting. - If
message
contains{{now}}
it will be replaced with the current timestamp - If
message
does not contain{{now}}
it will be prepended unlessinclude_timestamp=False
- If
postamble
is not specified, it will default to" ({elapsed:.1f} seconds)"
- If
output
is not specified, it will default tosys.stdout
- If
output_on_error
is not True, the normal postamble display will be suppressed when an exception occurs - By default, a newline will not be emitted after the opening message so the message and postamble will be
displayed on a single line.
output
will be flushed, if supported, to provide immediate feedback. Provide a message which ends in\n
if you want multi-line output.