python计算时间装饰器_python计算程序执行时间的装饰器使用

1、经常被问程序执行了多久,每个函数都去写很麻烦,所以打算写个装饰器自动计算程序执行时间;推荐文档,大多数基础题都有: https://python3-cookbook.readthedocs.io/zh_CN/latest/

import time

def clock(func):

def clocked(*args, **kwargs):

start = time.time()

result = func(*args, **kwargs)

end = time.time()

print(func.__name__, end - start)

return result

return clocked

@clock

def test():

print("excute...")

time.sleep(5)

test()

执行结果:

"D:\Program Files\python3.6.7\python.exe" D:/pythonWorkspace/untitled4/22.py

excute...

test 5.000607967376709

Process finished with exit code 0

2、装饰器错误使用方法

import datetime

import time

def clock(func):

start = datetime.datetime.now()

print(start)

def clocked(*args, **kwargs):

func(*args, **kwargs)

end = datetime.datetime.now()

total = (end - start).total_seconds()

print(end)

print("执行%s耗时:%d" %(func.__name__, total))

return clocked

@clock

def test():

print("excute...")

time.sleep(5)

test()

错误的执行结果:

"D:\Program Files\python3.6.7\python.exe" D:/pythonWorkspace/untitled4/55.py

2019-08-19 10:24:29.904106

2019-08-19 10:24:29.904106

执行test耗时:0

excute...

Process finished with exit code 0

-------------------------------------------------------------------------------------

适用于例如:

- 验证用户类型

copycode.gif

def user_auth(user_group):

def wrapper(func):

def inner(*args, **kwargs):

if user_group == 'SVIP':

print('Dear SVIP')

res = func(*args, **kwargs)

return res

elif user_group == 'General':

res = func(*args, **kwargs)

return res

else:

print('Please login first!')

login()

return inner

return wrapper

@user_auth(user_group='SVIP')

def welcome():

print('Welcome to the index')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值