永远重复但报告每x秒

时间:2013-05-28 19:09:22

标签: python benchmarking timing

我正在尝试使用此代码对功能运行的次数进行基准测试,例如10秒:

import time

window = 10

while True:
    n = 0
    while time.time() % window:
        test()      # which really runs only a fragment of a second
        n = n + 1
    print "n: %s" % n

但是test()一直在反复运行而没有看到任何输出(方式超过10秒)。我知道time.time() % window可能是天真的,但我无法想出正确的方法。

有人能把我推向正确的方向吗?我想避免使用“真正的基准测试工具”来学习如何做到这一点。

2 个答案:

答案 0 :(得分:0)

time.time()返回时间的浮点表示。

当你对它进行模数化时,你几乎从未让它完全返回0。

考虑使用:int(time.time()) % window


抬头但是:你想要在你的循环结束时睡一觉,以防止每次"基准"多次运行外循环。您可以通过对每次X迭代的时间进行基准测试而不是每X次迭代来避免这种情况。


每次X迭代时间的粗略示例:

window = 1000
start = time.time()
n = 0

while True:
    test()
    n = n + 1

    if n % window == 0:
        print "Average: %f/sec" % ( n / (time.time() - start) )

答案 1 :(得分:0)

这就是我想要的(加上避免了模数危险):

import time

def testFor(w, fn):
    n = 0
    start = time.time()
    while (time.time() - start) < w:
        fn()
        n = n + 1
    return n

window = 10

while True:
    n = testFor(window, test)
    print "n: %s" % n