计算python函数的最佳方法,并获得该函数的输出?

时间:2015-05-19 02:09:46

标签: python

计算python函数the most common approach seems to involve the 'timeit' module,它返回运行函数所花费的时间,但不返回函数的输出。

是否有一个模块与timeit做同样的事情,但除了运行时间之外还返回函数的输出,还是需要手动实现?如果手动实现这个,那么什么是一个很好的计时功能,这是相当准确的,并没有很多开销(选项包括,os.times(),datetime.now()等)? / p>

2 个答案:

答案 0 :(得分:1)

可能有很多解决这个问题的方法,但这里有两个你可以考虑的方法:

  • 运行该函数并将其输出存储在变量中。在函数完成后打印time.clock时间,但在返回存储在变量中的输出之前立即打印。对于函数,return语句的时间复杂度可以忽略不计。

  • 如果您比较正确性和运行时的多个实现,则上述方法可能不合适。在这种情况下,考虑在列表中返回函数的输出和time.clock输出,然后可以访问它,存储在结构中等等。同样,函数本身将主要与列表操作相对应并返回。

根据评论,使用time.clock获得处理器时间精度。

答案 1 :(得分:1)

您可以尝试使用time.time()

def timefunc(func):
    from time import time
    then = time()
    func()
    print time() - then

因此:

def foo():
    from sys import stdout
    from time import sleep
    for i in range(1, 11):
            stdout.write("\r%d" % i)
            stdout.flush()
            sleep(0.1)
    stdout.write("\n")
>>> timefunc(foo)
10
1.01269602776
>>> timefunc(foo)
10
1.00967097282
>>> timefunc(foo)
10
1.01678395271
>>>