计算python函数the most common approach seems to involve the 'timeit' module,它返回运行函数所花费的时间,但不返回函数的输出。
是否有一个模块与timeit做同样的事情,但除了运行时间之外还返回函数的输出,还是需要手动实现?如果手动实现这个,那么什么是一个很好的计时功能,这是相当准确的,并没有很多开销(选项包括,os.times(),datetime.now()等)? / p>
答案 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
>>>