Profiling a Python Script
Guide to profiling Python scripts for performance optimization using cProfile module. Shows both command-line usage and in-code implementation methods, with sorting options for analyzing execution time and bottlenecks.
Here are some simple ways to profile Python scripts.I heavily use this to check my Project Euler solutions.
SOLUTION 1:
The main common option would be to use the profile (or cprofile) module.There are two different ways of using it :
- As a module, by directly running
python -m cProfile script.py
- In your code, by importing the utilities
import cProfile
cProfile.run('function()') # in your __main__
Bonus : You can use several options for sorting results using the -s switch (cumulative/name/time/file sorting are available).
SOLUTION 2:
If you want to avoid using a command line, or you don't have the profile module installed; here os another possibility. There is also the timeit module available.
import timeit
t1 = timeit.Timer("function()", "from __main__ import function")
print t1.timeit(1)
I use this option on Eclipse because I didn't want to install the profile module on Windows.
This is however less clear, and way less detailed while still useful :).
Choose you profiler option and get on Project Euler !