En Sat, 29 Mar 2008 07:33:40 -0300, Steven D'Aprano
<[EMAIL PROTECTED]> escribió:
> The timeit.Timer class times "code snippets" -- you pass it strings
> rather than function objects. That's good for what it's worth, but
> sometimes the code you want to time is too big to easily pass as a
> string, or maybe you only have access to a function object without the
> source, or for whatever reason it's not very convenient.
>
> In this case, a good trick is to import the function by name:
>
> timeit.Timer('spam()', 'from __main__ import spam')
>
>
> But now I find myself wanting to time a function that's not defined in
> __main__. Here's a illustrative example:
>
>
> def factory():
> def f():
> return "spam"
> return f
>
> def main():
> func = factory()
> return timeit.Timer('func()', 'from __main__ import func').timeit()
Would this help (untested)?
def main():
return timeit.Timer('func()', 'from __main__ import factory; func =
factory()').timeit()
Or maybe:
def main():
global func
func = factory()
return timeit.Timer('func()', 'from __main__ import func').timeit()
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list