Попытайтесь читать Моно исходный код для получения взгляда на то, как смотрит компилятор C#, записанный в C#. Вы узнаете так много о языке, компиляторах и архитектуре ЭВМ. Это - большое преимущество проекта с источником - можно извлечь уроки из него.
Вы можете использовать wraps
из functools
.
Есть четкий пример, который вам подходит:)
functools.wraps не нужен! Просто используйте method.__name__
import time
def timeit(method):
def timed(*args, **kw):
ts = time.time()
result = method(*args, **kw)
te = time.time()
print('Function', method.__name__, 'time:', round((te -ts)*1000,1), 'ms')
print()
return result
return timed
@timeit
def math_harder():
[x**(x%17)^x%17 for x in range(1,5555)]
math_harder()
@timeit
def sleeper_agent():
time.sleep(1)
sleeper_agent()
Выходы:
Function math_harder time: 8.4 ms
Function sleeper_agent time: 1003.7 ms
Ознакомьтесь с functools.wraps . Требуется Python 2.5 или выше, хотя, если это проблема.