Utilizzare un decoratore per misurare i tempi di esecuzione delle funzioni può essere utile. C'è un esempio su http://www.zopyx.com/blog/a-python-decorator-for-measuring-the-execution-time-of-methods.
Di seguito ho incollato senza vergogna il codice dal sito menzionato in precedenza in modo che l'esempio esista in SO nel caso in cui il sito venga cancellato dalla rete.
import time
def timeit(method):
def timed(*args, **kw):
ts = time.time()
result = method(*args, **kw)
te = time.time()
print '%r (%r, %r) %2.2f sec' % \
(method.__name__, args, kw, te-ts)
return result
return timed
class Foo(object):
@timeit
def foo(self, a=2, b=3):
time.sleep(0.2)
@timeit
def f1():
time.sleep(1)
print 'f1'
@timeit
def f2(a):
time.sleep(2)
print 'f2',a
@timeit
def f3(a, *args, **kw):
time.sleep(0.3)
print 'f3', args, kw
f1()
f2(42)
f3(42, 43, foo=2)
Foo().foo()
// John
fonte
2010-04-18 12:33:47
simili http://stackoverflow.com/questions/889900/accurate-timing-of-functions-in-python –
Entrambi questi fili erano circa temporizzazione * * funzioni, che può o non può essere quello è richiesto di fare "algoritmi di temporizzazione", che mi sembra un compito mal definito. Potrebbe richiedere cose molto più complesse del cronometrare una funzione. –
Inoltre, le domande sugli algoritmi (purché siano correlate alla programmazione) sono sicuramente benvenute su Stack Overflow. –