
An easier way to use Python's cProfile - ymichael
https://github.com/ymichael/cprofilev
======
jbaiter
I found that writing cProfile's profiling data to a file and analysing that
with either RunSnakeRun's[1] or KCacheGrind's[2] GUI gave me much more insight
than just the tabular display from cProfile. It gives you a really good visual
overview of where your code spends its time and has a really good interface
for drilling down into subroutines to pinpoint the exact location of the slow
code.

[1]
[http://www.vrplumber.com/programming/runsnakerun/](http://www.vrplumber.com/programming/runsnakerun/)
[2]
[http://kcachegrind.sourceforge.net/html/Home.html](http://kcachegrind.sourceforge.net/html/Home.html)

~~~
masklinn
Still not exactly great. I'd like to get a flamegraph view of the profile[0]
or a chrome-style time series as it provides a much clearer high-level
picture, but I'm not sure cProfile records enough information to do so (or
that it stores threading informations in the profile, which would be necessary
for time series)

[0]
[http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html](http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html)

~~~
andor
I added flamegraph to plop, if you're interested:

[https://github.com/andreasf/plop/tree/flamegraph_support](https://github.com/andreasf/plop/tree/flamegraph_support)

Here's an example:
[http://zentrale1.com/~an/nachher5.svg](http://zentrale1.com/~an/nachher5.svg)

~~~
ehvatum
This thread changed my life.

~~~
andor
Few more tips for successful Python profiling:

* By default, the ITIMER signals used by the profiler interrupt syscalls. Disable that by adding the following in plop.Collector.__init__() _after_ the call to signal.signal():
    
    
      signal.siginterrupt(sig, False)
    

* Try all ITIMER modes, e.g. by changing the default in plop.Collector.__init__()

------
codefisher
This looks like it could help make it much easier to profile my django web
apps during development.

------
XorNot
Ooh, this will help me a lot!

~~~
ymichael
Thanks!

