measuring a function time

Albert Hopkins marduk at letterboxes.org
Fri Jul 30 10:20:19 EDT 2010


On Fri, 2010年07月30日 at 14:28 +0200, Hrvoje Niksic wrote:
> Steven D'Aprano <steve at REMOVE-THIS-cybersource.com.au> writes:
>> > On 2010年7月29日 14:42:58 +0200, Matteo Landi wrote:
> >
> >> This should be enough
> >> 
> >>>>>import time
> >>>>>tic = time.time()
> >>>>>function()
> >>>>>toc = time.time()
> >>>>>print toc - tic
> >
> > You're typing that in the interactive interpreter, which means the
> > timer is counting the seconds while you're typing subsequent
> > commands. At the very least, you need to put that code into a
> > function.
>> Or, trivially improved as follows:
>> >>> t0 = time.time(); function(); t1 = time.time()
> >>> print t1 - t0

I'll just throw this out. I sometimes use a decorator to keep track of
a functions execution times:
 def timed_function(f):
 """Function decorator that records the execution time of a
 function"""
 import time
 def funct(*args, **kwargs):
 __starttime = time.time()
 result = f(*args, **kwargs)
 __endtime = time.time()
 funct.runtime = __endtime - __starttime
 
 return result
 return funct
Then
 >>> from goodies import timed_function
 >>> from time import sleep
 >>> @timed_function
 ... def test(n):
 ... sleep(n)
 ... 
 >>> test(4)
 >>> test.runtime
 4.003864049911499
Works for simple stuff anyway.
-a


More information about the Python-list mailing list

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