【发布时间】:2020-07-03 14:33:42
【问题描述】:
我尝试编写一个函数,该函数将运行另一个传递给它的函数,并返回其执行时间。
有人可以向我解释为什么以下总是打印 0.0 秒吗?
为了澄清,我定义中的“func”是调用 func 而无需添加括号。在调用 run_and_return_execution_time(func) 时,我看到了来自 func 的打印分析输出。我目前正在 Jupyter 笔记本中运行它 - 不确定这是否有任何区别。
import time
def run_and_return_execution_time(func):
t_start = time.time()
func
return time.time() - t_start
t_execution = run_and_return_execution_time(func)
print('Execution time: ',t_execution)
我尝试计时的功能肯定正在执行,如果我使用以下方法计时,则打印大约 44 秒:
t_start = time.time()
func()
t_end = time.time()
print('Execution time: ',t_end - t_start)
我知道还有其他方法可以做到这一点,例如使用 cProfile,但我有兴趣了解这里发生了什么。
【问题讨论】:
-
将括号添加到您的
run_and_return_execution_time:#...; func(); -
我会把它添加为问题的答案
标签: python time parameter-passing