Source code for profiler

import time
import pprint


[docs] class Timer: def __init__(self, name):
[docs] self.name = name
[docs] self.runtimes = {}
[docs] self.runtimes_readable = {}
[docs] def start(self, tag): self.runtimes[tag] = {"start": time.time()}
[docs] def end(self, tag): self.runtimes[tag]["end"] = time.time() self.runtimes[tag]["elapsed"] = self.runtimes[tag]["end"] - self.runtimes[tag]["start"]
[docs] def get_runtime(self, tag): return self.runtimes[tag]["elapsed"]
[docs] def show(self): self._to_readable() pprint.pprint(self.runtimes_readable)
[docs] def _to_readable(self): for tag, runtime in self.runtimes.items(): self.runtimes_readable[tag] = {"start": time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(runtime["start"]))} self.runtimes_readable[tag]["end"] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(runtime["end"])) self.runtimes_readable[tag]["elapsed"] = round(runtime["elapsed"], 5)
if __name__ == "__main__":
[docs] timer = Timer("profiler")
timer.start("main") time.sleep(1) timer.end("main") timer.show()