[python] Počítání volání metod
Michal Vyskocil
michal.vyskocil na gmail.com
Čtvrtek Prosinec 20 23:07:54 CET 2007
Dne Thursday 20 of December 2007 22:40:57 martin.stiborsky na gmail.com
napsal(a):
> Zdravím, dneska budu ještě jednou otravovat.
> Michal Vyskočil mi poradil, jak přijít na jméno volané metody, za to
> mu díky, mně to hned posloužilo k realizování mého záměru, počítání
> kolikrát byla metoda zavolána, nevím jestli to neřeším úplně blbě.
No, zrovna modul inspect mi prijde jako kanon na vrabce. Daleko elegantnejsi
bude pouzit dekoratory a napsat neco podobneho, jako
stats = {}
def counter(func):
def wrapper(*args, **kwargs):
ret = func(*args, **kwargs)
if not func.__name__ in stats:
stats[func.__name__] = 0
stats[func.__name__] += 1
return wrapper
@counter
def foo():
return "foo"
for i in xrange (5):
ret = foo()
print "%d: %s" % (stats["foo"], ret)
Pochopitelne to neni uplne hotove, bylo by vhodnejsi pouzivat nejaky
Singleton, misto globalni promenne a mohlo by to umet ukladat
modul.jmeno_funkce, pripadne modul.trida.jmeno_metody a pripadne i parametry
(napr id), ale pro prvni nastrel to snad staci. O serializaci hodnot na
vystup ani nemluve.
Navic, neexistuje nejaka knihovna pro Python, ktera statistiky pristupu resi?
Pripadne nastroje pro analyzu logu webserveru?
--
best regards
Michal Vyskocil
Další informace o konferenci Python