I really like the simplicity of your solution, but you might be interested in kernprof: https://github.com/rkern/line_profiler It seems to be the nearly-canonical line-by-line profiler for Python, or was some years ago.
Its implimentation is much more complex but I'd recommend trying it as it's trivial to use in practice:
- Find a suspiciously slow function using cProfile
- pip install line_profiler
- Edit function to start with @profile
- Run kernprof
- Take a look at the output and act accordigly