Introduction Coarse grain timing with time Fine grain timing with a timing context manager Line-by-line timing and execution frequency with a profiler How much memory does it use? IPython shortcuts for line_profiler and memory_profiler Where’s the memory leak? Which objects are the most common? Which objects have been added or deleted? What is referencing this leaky object? Effort vs precision Ref