Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 永远重复,但每x秒报告一次_Python_Benchmarking_Timing - Fatal编程技术网

Python 永远重复,但每x秒报告一次

Python 永远重复,但每x秒报告一次,python,benchmarking,timing,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()。我知道time.time()%窗口可

我正在尝试使用以下代码对函数能够在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()。我知道
time.time()%窗口可能很幼稚,但我想不出正确的方法

谁能把我推向正确的方向?我希望避免使用“真正的基准测试工具”,而是学习如何使用。

code>time.time()
返回时间的浮点表示形式

当你对它进行模化时,你几乎永远不会让它精确返回0

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


不过请注意:您需要在循环结束时睡眠,以防止每个“基准”多次运行外部循环。您可以通过基准化每次迭代的时间而不是每次迭代的时间来避免这种情况


每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) )
这就是我想要的(并且避免了模的危险):

导入时间
def测试(w,fn):
n=0
开始=时间。时间()
while(time.time()-start)
如果您想使用更强大的功能,请查看。我以前用过它进行性能调试,效果很好。对不起,我刚读了最后一部分。如果有其他人想使用“真正的基准测试工具”,我将把它留在这里:)我已经尝试了
int(time.time())%window
,但问题是它在10秒内出现的次数要比一次多。如果你想继续这条路线,你可以在int(time.time())时添加
%window==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