小编Fen*_*ong的帖子

Python:使用decorator计算递归函数的执行时间

我想编写一个行为与给定函数完全相似的函数,只不过它会打印执行该函数所消耗的时间。像这样:

>>> fib = profile(fib)
>>> fib(20)
time taken: 0.1 sec
10946
Run Code Online (Sandbox Code Playgroud)

这是我的代码,它将在每个函数调用中打印消息。

import time


def profile(f):
    def g(x):
        start_time = time.clock()
        value = f(x)
        end_time = time.clock()
        print('time taken: {time}'.format(time=end_time-start_time))
        return value
    return g


@profile
def fib(n):
    if n is 0 or n is 1:
        return 1
    else:
        return fib(n-1) + fib(n-2)
Run Code Online (Sandbox Code Playgroud)

我上面的代码将为每个fib(n-1)打印一条消息``耗时:...'',因此会有很多消息``耗时:...''。我可以找到一种方法来仅打印fib(20)的执行时间,而不是每个fib(n-1)的执行时间吗?

python recursion decorator

1
推荐指数
1
解决办法
1501
查看次数

标签 统计

decorator ×1

python ×1

recursion ×1