- 首先先介绍一个常规的方式:
import datetime
import sys
g_func_name = {}
def time_score(func_name:str):
"""
计算函数运行时间:
@params: func_name: 函数名
@return :函数启动时间
"""
if g_func_name.get(func_name) is None:
g_func_name[func_name] = datetime.datetime.now()
print(f"函数名: {func_name} 的启动时间:{ g_func_name[func_name]}")
else:
end_time = datetime.datetime.now()
print(f"函数名: {func_name} 的结束时间:{end_time}")
start_time = g_func_name.get(func_name)
print(f"函数名: {func_name} 的运行时间:{(end_time - start_time).seconds}s")
g_func_name.pop(func_name)
使用方法:
获取当前函数名
import sys
current_func = sys._getframe().f_code.co_name
在函数的入口和出口设置即可
def test_func():
# 获取开始时间
time_score(current_func)
print("执行一些自己的操作")
# 获取结束时间
time_score(current_func)
- 第一种的话,每次都得写方法,重复性很大,在计算函数方法的时候,可以使用Python装饰器的方式,这样更简洁
def time_cal(func):
def inner(*s,**gs):
time_start = datetime.datetime.now()
func(*s,**gs)
time_end = datetime.datetime.now()
print(f"方法名:{func.__name__}:运行耗时{(time_end - time_start).seconds}s")
return inner
- 使用方式
@time_cal
def test_xxx():
print("HelloWorld")