On Sat, 29 Mar 2008 21:12:33 -0300, Gabriel Genellina wrote: > Or maybe: > > def main(): > global func > func = factory() > return timeit.Timer('func()', 'from __main__ import func').timeit()
Alas, this does not work, because all the Timer instances share the same state. import timeit, time def test_timer(func1, func2): global gFUNC gFUNC = func1 T1 = timeit.Timer('gFUNC()', 'from __main__ import gFUNC') gFUNC = func2 T2 = timeit.Timer('gFUNC()', 'from __main__ import gFUNC') print "Calling %s" % func1.__name__ T1.repeat(3, 1) print "Calling %s" % func2.__name__ T2.repeat(3, 1) def functionA(): print "Function A" def functionB(): print "Function B" And here's the results: >>> test_timer(functionA, functionB) Calling functionA Function B Function B Function B Calling functionB Function B Function B Function B -- Steven -- http://mail.python.org/mailman/listinfo/python-list