Source code for profiler

import pprint
import time


[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()