一、函数的装饰器
1、单装饰器
import time
import threading
def how_much_time(fun):
def inner():
startTime = time.time()
fun()
endTime = time.time()
print("耗时:{0}秒".format(endTime-startTime))
return inner
@how_much_time
def sleep_5s():
time.sleep(5)
print("%d秒结束了"%(5,))
@how_much_time
def sleep_6s():
time.sleep(6)
print("%d秒结束了"%(6,))
t1 = threading.Thread(target=sleep_5s)
t2 = threading.Thread(target=sleep_6s)
t1.start()
t2.start()
2、多装饰器
①、执行顺序
- 距离被修饰函数:由近到远(先执行@how_much_time,再执行@mylog,然后执行@mylog内函数,最后执行@how_much_time内函数)
- @mylog+@how_much_time:相当于mylog(how_much_time(sleep_5s))
②、代码
import time
def how_much_time(func):
print("how_much_time函数开始执行")
def inner():
statrTime = time.time()
func()
endTime = time.time()
print("耗时:{0}秒".format(endTime - statrTime, ))
return inner
def mylog(func):
print("mylog函数开始执行")
def inner_1():
print("start")
func()
print("end")
return inner_1
@mylog
@how_much_time
def sleep_5s():
time.sleep(5)
print("%d秒结束了" % (5,))
if __name__ == '__main__':
sleep_5s()