一、目标
用指定装饰器,测量类以及这个类下每个函数的的运行时长。
1、返回【class Main】的时长;
2、返回【def data】的时长;
3、返回【def save】的时长。
二、问题
现有代码可测量整个类的用时,但用于函数时会报错。
三、请帮助
如何修改才能实现上述目标?修改代码或提供思路均可,谢谢。
import time
import pandas as pd
import numpy as np
# 一、目标
# 用指定装饰器,测量类以及这个类下每个函数的的运行时长。
# 1、返回【class Main】的时长;
# 2、返回【def data】的时长;
# 3、返回【def save】的时长。
# 二、问题
# 现有代码可测量整个类的用时,但用于函数时会报错。
# 三、请帮助
# 如何修改才能实现上述目标?修改代码或提供思路均可,谢谢。
class Time_it: # 一定要用类编写装饰器
def __call__(self, func):
def wrapper(*args, **kwargs):
star = time.time()
func(*args, **kwargs)
end = time.time()
print("【{}】运行时长: {}".format(func.__name__, end - star))
return wrapper
@Time_it() # 可以正常测量整个类的运行时长
class Main:
def __init__(self):
self.file = "test.xlsx"
self.save()
# @Time_it()#如果运行,则报错
def data(self):
dataframe = pd.DataFrame(np.random.randint(0, 100, size=(5, 3)))
return dataframe
# @Time_it()#如果运行,则报错
def save(self):
df = self.data()
df.to_excel(self.file)
Main()