python - 它说:AttributeError:'function'对象没有属性'time_taken'
问题描述
import time
def profile(function):
def wrapper(*args):
start_time = time.time()
function(*args)
end_time = time.time()
function.time_taken = end_time-start_time
return exec_time
return wrapper
"""
@profile
def calsqr(a,b):
return a**b
"""
@profile
def expensive_operation():
import time
time.sleep(3)
return 1
print(expensive_operation.time_taken)
assert expensive_operation() == 1
解决方案
您需要分配time_taken
给包装函数,并首先调用它才能访问time_taken
变量
import time
def profile(function):
def wrapper(*args, **kwargs):
start_time = time.time()
ret_value = function(*args, **kwargs)
end_time = time.time()
wrapper.time_taken = end_time-start_time
return ret_value
return wrapper
"""
@profile
def calsqr(a,b):
return a**b
"""
@profile
def expensive_operation():
import time
time.sleep(3)
return 1
assert expensive_operation() == 1
print(expensive_operation.time_taken)
推荐阅读
- google-sheets - 如何将 Google Sheets 链接到 IBM Watson Assistant?
- beautifulsoup - 刮zomato.com的问题
- javascript - 如何使用 php 从 mysql 检索数据并在 javascript 上显示?
- r - 如何使用 for 循环在没有 5 组这么多行的情况下循环?
- python - 如何在烧瓶中使用熊猫读取文件
- react-native - 如何使用 z-index animate 创建轮播
- sql-server - 是否可以在 SQL Server 的 .bak 文件中选择要恢复的特定表或视图或任何数据库对象?
- python - 如何在 Python 中获取下个月的第一天?
- mysql - 如何使用 Google App Script 将数据插入外部数据库:不使用 Google SpreadSheet 的 MySQL
- mysql - 在 MySQL 中使用正确的数据查找和替换重复项