Esmail wrote:
Tim Chase wrote:
However the first rule:  profile first!

Do you have a favorite profiling tool? What should someone new
to Python (but not programming) use?

I personally use the cheapo method of dropping in a few "print" statements to dump where I currently am in the app, and then see where it hangs. "Hmm, it seems to take a long time to get from step J to step K, I better zoom in on that block of code" I usually have a good intuition where to go digging first (such as multi-nested loops, network communications, file I/O, or database queries) which is fairly close most of the time.

If possible, I'll occasionally comment out the code I suspect (or perform a null-op instead of actually executing the block) to confirm that this block is the problem. However, sometimes I can't readily do that because it sets up data structures that are needed elsewhere.

There are several profiling tools for Python, including the cProfile module[1] but I've never gotten to the point where I've needed that level of detail.

-tkc

[1] http://docs.python.org/library/profile.html

PS: this is a trade-off between "what I've always done" and "darn, the stdlib provides yet one more battery I could be using instead of rolling my own". I finally switched to using the csv, ConfigParser, pdb, and optparse modules because they were faster routes to better solutions than my own hacks. However I still tend to just use print statements for profiling & logging instead of the logging and cProfile modules. I guess I just haven't experienced enough pain in my own code to switch yet :)


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to