[Python-ideas] Allow Profile() to be used as a context manager

David Townshend aquavitae69 at gmail.com
Wed Jan 25 10:47:54 CET 2012


On Wed, Jan 25, 2012 at 10:19 AM, Yuval Greenfield <ubershmekel at gmail.com>wrote:
> On Wed, Jan 25, 2012 at 8:36 AM, David Townshend <aquavitae69 at gmail.com>wrote:
>>> [...]
>> Any major objections to this?
>>>>>> At first this sounded like a good idea but 2 things pop to mind:
>>> 1. How does one get the pstat profiling output from the context
> manager? Will printing out the results be the only option?
>> The same way as currently:

profile = cProfile.Profile()
with profile:
 do_something()
profile.dump_stats(filename)
Perhaps it would be a good idea to provide a convenience function (like
run()), so that:
with cProfile.do(filename):
 do_something()
I don't like calling the function do(), but I can't think of anything
better off-hand, and it illustrates my point.
>> 1. Usually when I profile I don't want to touch the code at all so
> eventually if I'll use this context manager it'll be more akin to
>>> with profile.Profiler():
> main()
>> Which isn't much of a win over
>> profile.run('main()')
>
I agree, but this isn't the use case.
> Now if you're talking about a reentrant profiler, that's interesting:
>> profiler = profile.Profiler()
>> while is_working:
> with profiler:
> do_hard_task()
>> do_a_hard_but_i_dont_care_now_task()
>> with profiler:
> do_a_diff_hard_task()
>>> and then I can call whatever method is there to get the pstat. If this is
> the vision then it sounds awesome.
>>And this is the use case! I'm not entirely sure how re-entrancy would be
dealt with by the profiler though. From what I read in the source code it
looks like it would all accumulate, and this is certainly the way I would
expect it to behave, but I'd need to run a few tests to be sure.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20120125/75180ebc/attachment.html>


More information about the Python-ideas mailing list

AltStyle によって変換されたページ (->オリジナル) /