我试图返回一个csv文件,并使用装饰器查找运行时间。(下面的代码是相同的示例代码。)但我得到一个错误,它是"'DataFrame'对象是不可调用的">
import pandas as pd
import time
import functools
def timer(func):
@functools.wraps(func)
def wrapper_timer():
start_time = time.perf_counter()
value = func()
end_time = time.perf_counter()
run_time = end_time - start_time
print(f"Finished {func.__name__!r} in {run_time:.4f} secs")
return value
return wrapper_timer()
@timer
def generate_df():
file="file.csv"
df = pd.read_csv(file)
return df
df = generate_df()
if __name__ == '__main__':
print(df.head())
您应该在装饰器
中返回函数引用。return wrapper_timer
而不是调用它
写代码的好方法,
import pandas as pd
from time import time
import functools
def timer(func):
@functools.wraps(func)
def wrapper_timer(*args, **kwargs):
start_time = time()
value = func(*args, **kwargs)
run_time = time() - start_time
print(f"Finished {func.__name__!r} in {run_time:.4f} secs")
return value
return wrapper_timer
@timer
def generate_df(file):
df = pd.read_csv(file)
return df
if __name__ == '__main__':
filepath = "/home/vishnudev/Downloads/CF-Event-equities-21-Feb-2021.csv"
df = generate_df(filepath)
print(df.head())