在优化系统的时候,我们经常会发现一些操作,总有那么一些按钮的反应速度是慢于平均值的。甚至时间过长而影响业务的处理,我们如何定位这个方法中,具体是执行了那一个方法而导致了速度缓慢,或者说哪一个方法的速度需要优化,我们需要着重去对待它。
这个时候我觉得将此方法下分为几个模块,然后在日志中打印出他们的执行时间,从而能够从中发现问题所在并且着手解决。
import logging _logger = logging.getLogger(__name__) _logger.debug("debug message for debugging only") _logger.info("information message to report important modular event") _logger.warning("warning message to report minor issues") _logger.error("error message to report failed operations") _logger.critical("critical message -- so bad that the module cannot work")
不同的方法有着不同的事务级别。
此时我们既可以选择写一个装饰器,直接套用在各自的函数上即可:
def ctime(func): @wraps(func) def wapper(*args, **kwargs): begin = time.time() result = func(*args, **kwargs) end = time.time() log.info('fun_name:%s,time:%s'%(func.__name__, end - begin)) return result return wapper
亦或者有时候我们一个函数下面调用的方法比较多。而我们想要得到一个它们各自运行速率的,此时我们可以将上述装饰器拆分开来。
直接
begin = time.time()
#你要测试速度的代码
end = time.time()
log.info('起一个可以去分开他们的名字:%s,time:%s'%(func.__name__, end - begin))