分析python各个函数执行时间
构造一个装饰器,使用时将装饰器加到函数前面,代码如下:
"""
代码耗时分析工具 使用时去掉print的注释
"""
import time
def get_time_consume(f):
def inner(*arg, **kwarg):
s_time = time.time()
res = f(*arg, **kwarg)
e_time = time.time()
print(f.__qualname__, '耗时:{}秒'.format(e_time - s_time))
return res
return inner
@get_time_consume
def do():
time.sleep(2) # 模拟运行2s
if __name__ == '__main__':
do()
使用f.__qualname__
是为了获取函数的类名和函数名。
如果用f.__name__
只能获取到函数名,而不能获取类名。
结果如下:
question_solve 耗时:1.121013879776001秒
NER.get_ner 耗时:0.003954887390136719秒
SemanticSearch.sentence_ner_entities 耗时:0.198167085647583秒
TemplateMatch.match_sentence 耗时:0.12040996551513672秒