打印函數運行時間
import time
def time_logger(func):
def w(*args, **kwargs):
s = time.time()
r = func(*args, **kwargs)
e = time.time()
time_diff = int(e-s)
if time_diff > 1:
print('function %s runtime: %s %s'%(
func.__name__, e-s, '!'*(time_diff//5)))
return r
return w
@time_logger
def delay(n):
for i in range(n):
if i < n:
print(i)
i += 1
time.sleep(1)
print("結束")
delay(20)
用了函數的裝飾器,其實裝飾器很簡單,用法如上,就是在執行你delay
函數之前會先執行time_logger
函數。