Profiling your code easily with cProfile and IPython
The %timeit
magic command is often helpful, yet a bit limited when we need detailed information about what takes up most of the execution time. This magic command is meant for benchmarking (comparing the execution times of different versions of a function) rather than profiling (getting a detailed report of the execution time, function by function).
Python includes a profiler named cProfile that breaks down the execution time into the contributions of all called functions. IPython provides convenient ways to leverage this tool in an interactive session.
How to do it...
IPython offers the %prun
line magic and the %%prun
cell magic to easily profile one or multiple lines of code. The %run
magic command also accepts a -p
flag to run a Python script under the control of the profiler. These commands accept a lot of options as can be seen with %prun?
and %run?
.
In this example, we will profile a numerical simulation of random walks. We will cover...