From Python’s official documentation: “A profile is a set of statistics that describes how often and for how long various parts of the program executed.”
Python’s standard library provides two implementations of the same profiling interface: cProfile and profile but I always go with cProfile for short scripts because you can invoke it at run time like so (no import required!):
python3 -m cProfile foo.py
The output provides you the total runtime and also a break down by call type, which can be very helpful when you are looking for ways to optimize a script.
cProfile example output:
131 function calls in 0.001 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.001 0.001 loops.py:4(<module>)
1 0.000 0.000 0.001 0.001 loops.py:4(multiple_loops)
1 0.000 0.000 0.001 0.001 {built-in method builtins.exec}
58 0.001 0.000 0.001 0.000 {built-in method builtins.print}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
40 0.000 0.000 0.000 0.000 {method 'insert' of 'list' objects}
29 0.000 0.000 0.000 0.000 {method 'join' of 'str' objects}
The post Profiling: check how long it takes to run a Python script was originally published at flaviabastos.ca