如何装饰一个属性来衡量它执行的时间?
How to decorate a property to measure the time it executes?
我试图编写一个装饰器来计算 class 中方法的计算时间,但我也有很多属性。
我尝试为 属性 编写装饰器,如下所示:
def timer(method):
import time
@property
def wrapper(*args, **kw):
start = time.time()
result = method
end = time.time()
print('Elapsed time for: {} is: {}s'.format(method.__name__,(end-start)*1000))
return result
return wrapper
属性写的名字我看不出来,而且你会建议换个方式写吗?
您需要堆叠装饰器:
def timer(method):
import time
def wrapper(*args, **kwargs):
start = time.time()
result = method(*args, **kwargs) # note the function call!
end = time.time()
print('Elapsed time for: {} is: {}s'.format(method.__name__,(end-start)*1000))
return result
return wrapper
class X:
@property
@timer
def some_method(self):
# timed code
return 0
>>> x = X()
>>> x.some_method
Elapsed time for: some_method is: 0.0050067901611328125s
0
我试图编写一个装饰器来计算 class 中方法的计算时间,但我也有很多属性。 我尝试为 属性 编写装饰器,如下所示:
def timer(method):
import time
@property
def wrapper(*args, **kw):
start = time.time()
result = method
end = time.time()
print('Elapsed time for: {} is: {}s'.format(method.__name__,(end-start)*1000))
return result
return wrapper
属性写的名字我看不出来,而且你会建议换个方式写吗?
您需要堆叠装饰器:
def timer(method):
import time
def wrapper(*args, **kwargs):
start = time.time()
result = method(*args, **kwargs) # note the function call!
end = time.time()
print('Elapsed time for: {} is: {}s'.format(method.__name__,(end-start)*1000))
return result
return wrapper
class X:
@property
@timer
def some_method(self):
# timed code
return 0
>>> x = X()
>>> x.some_method
Elapsed time for: some_method is: 0.0050067901611328125s
0