Python includes a profiler called cProfile. This is generally preferred over using timeit.
It breaks down your entire script and for each method in your script it tells you:
ncalls: The number of times a method was calledtottime: Total time spent in the given function (excluding time made in calls to sub-functions)percall: Time spent per call. Or the quotient of tottime divided by ncallscumtime: The cumulative time spent in this and all subfunctions (from invocation till exit). This figure is accurate even for recursive functions.percall: is the quotient of cumtime divided by primitive callsfilename:lineno(function): provides the respective data of each functionThe cProfiler can be easily called on Command Line using:
$ python -m cProfile main.py 
To sort the returned list of profiled methods by the time taken in the method:
$ python -m cProfile -s time main.py 
 
                