Python返回时间性能time.clock()

2024-04-25 11:35:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码来度量时间性能

import time

def fibonacci(n):
    t0 = time.clock()
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        a = fibonacci(n-1)
        b = fibonacci(n-2)
    return a + b, time.clock()  

当我运行时,它返回Type error: can only concatenate tuple (not "int") to tuple
我怎样才能把函数的结果和时间性能一起返回呢?我错过了什么


Tags: 代码importreturniftime度量def时间
2条回答

如果希望函数本身返回时间,则必须记住这是一个调用自身的递归函数,因此必须考虑(可能会放弃)内部调用计时结果。您还必须编辑所有return语句:

def fibonacci(n):
    t0 = time.clock()
    if n == 0:
        return 0, time.clock() - t0
    elif n == 1:
        return 1, time.clock() - t0
    else:
        a, _ign = fibonacci(n-1)
        b, _ign = fibonacci(n-2)
    return a + b, time.clock() - t0 

另一种方法是测量函数外部的时间,这样就不必修改函数:

 t0 = time.clock()
 fibonacci(some_number) # call the original function without timing
 time_taken = time.clock() - t0

ab是函数的结果,返回一个元组。。。只需在函数包装器中从外部调用主斐波那契函数:

def time_fibonacci(n):
    start = time.clock()
    result = fibonacci(n)
    # return a tuple: result + cpu time
    return result, time.clock() - start  

修正了斐波那契曲线本身(没有时钟):

def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        a = fibonacci(n-1)
        b = fibonacci(n-2)
    return a + b

相关问题 更多 >