我是新手,现在仍难以接受装饰器语法糖的逻辑,所以下面的代码没有使用装饰器。
结果是:
6.91400003433
0.0790004615784
使用yield语句得到的迭代器速度快很多
当然这份代码是复杂化了,只是为了练习闭包。
我想问下老师,在老师你后面的深度学习课程里,使用装饰器的频率高不高啊?
import time
def time_cost(loop_times):
def decorator(func):
def wrapper(*arg):
time_list = []
for i in range(loop_times):
global loop_times1
loop_times1 = i
start_time = time.time()
func(*arg)
end_time = time.time()
cost_time = end_time - start_time
time_list.append(cost_time)
sum_time = sum(time_list)
return sum_time
return wrapper
return decorator
def calculate1(adult, child):
for i in range(loop_times1):
adult, child = adult + child, adult
return adult + child
def calculate2(adult, child):
while True:
adult, child = adult + child, adult
yield adult + child
calculate2_generator = calculate2(0, 1)
if __name__ == '__main__':
print time_cost(10000)(calculate1)(0, 1)
print time_cost(50000)(calculate2_generator.next)()