Would that stop the profiler between calles though?  In Yuval's example, wouldn't 
<span style>do_a_hard_but_i_dont_care_</span><span style>now_task</span> be included in the profile then?<br><br><div class="gmail_quote">On Wed, Jan 25, 2012 at 12:16 PM, Robert Kern <span dir="ltr"><<a href="mailto:robert.kern@gmail.com">robert.kern@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 1/25/12 6:36 AM, David Townshend wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I often find it useful to profile small sections to code in a running<br>
application to pinpoint a known bottleneck. The cProfile and profile modules<br>
don't make this easy as they stand, requiring the section of code to be wrapped<br>
into a single statement with can be called as a string using exec().  This<br>
always feels a bit clumsy to me, so my idea is simply to provide __enter__ and<br>
__exit__ methods to cProfile.Profile() and profile.Profile().  From a quick look<br>
at the code it seems that this should be very easy for cProfile, and slightly<br>
less easy for profile (I can't quite figure out how to deal with the set_cmd()<br>
line, or how important it is - maybe someone can help?).<br>
<br>
Any major objections to this?<br>
</blockquote>
<br></div></div>
I've done this in my kernprof.py script, which I use as a convenient generic profiling script. I subclass cProfile.Profile to add enable_by_count()/disable_by_<u></u>count() methods that allow nesting. enable_by_count() increments a counter and only calls the enable() method the first time. disable_by_count() decrements the counter and only calls disable() when it hits 0 again. __enter__() and __exit__() just call these methods. I also add a __call__() method that lets a Profile instance act as a decorator, which I actually find somewhat more useful than the context manager.<br>


<br>
<a href="https://bitbucket.org/robertkern/line_profiler/src/tip/kernprof.py#cl-57" target="_blank">https://bitbucket.org/<u></u>robertkern/line_profiler/src/<u></u>tip/kernprof.py#cl-57</a><span class="HOEnZb"><font color="#888888"><br>


<br>
-- <br>
Robert Kern<br>
<br>
"I have come to believe that the whole world is an enigma, a harmless enigma<br>
 that is made terrible by our own mad attempt to interpret it as though it had<br>
 an underlying truth."<br>
  -- Umberto Eco<br>
<br>
______________________________<u></u>_________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-ideas" target="_blank">http://mail.python.org/<u></u>mailman/listinfo/python-ideas</a><br>
</font></span></blockquote></div><br>