Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.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 每次迭代的计算时间_Python_Time - Fatal编程技术网

Python 每次迭代的计算时间

Python 每次迭代的计算时间,python,time,Python,Time,我试图计算每个循环迭代的时间。然而,我注意到,每次迭代都会以增量方式增加处理(任何事情)所需的时间。我使用以下命令计算时间: start_time = time.time() loop: (any process) print (time.time() - start_time)) 调用time.time方法时,返回的是基于Unix时钟系统的时间量(以秒为单位),基本上是系统的本地时间 您正在分配开始时间,然后运行10个进程并输出当前时间减去开始时间,因此您基本上是在计算运行10个进

我试图计算每个循环迭代的时间。然而,我注意到,每次迭代都会以增量方式增加处理(任何事情)所需的时间。我使用以下命令计算时间:

start_time = time.time()
loop: 
    (any process)
print (time.time() - start_time))

调用time.time方法时,返回的是基于Unix时钟系统的时间量(以秒为单位),基本上是系统的本地时间

您正在分配开始时间,然后运行10个进程并输出当前时间减去开始时间,因此您基本上是在计算运行10个进程所需的时间

现在我相信您要做的是计算每个进程所需的时间,要做到这一点,您需要在您提供的示例代码中移动一些行:

    import time
        for i in range(10): 
        start_time = time.time()    
        (any process)

        print(time.time() - start_time))
通过将时间分配移动到循环中,您将分配循环开始的时间,然后输出每个迭代的单个时间,而不是计时整个循环作为一个整体需要多长时间

这将输出每次迭代所需的时间


请随时提问

下面是一个示例,说明如何使用
timeit
执行计时

import timeit
setup = "i = {}"
stmt = """
for x in range(i):
    3 + 3
"""
[timeit.timeit(stmt=stmt, setup=setup.format(i), number=100) for i in range(10)]
这将为您提供每个循环的时间列表:

[8.027901640161872e-05,
 0.00011072197230532765,
 0.00011189299402758479,
 0.00012168602552264929,
 0.00012224999954923987,
 0.0001258430420421064,
 0.00013012002455070615,
 0.00013478699838742614,
 0.000138589006382972,
 0.0001438520266674459]

你应该使用@Cory-Madden。。。它们(即time.time()和timeit)不是都在做同样的事情吗?这些工具中只有一个是为您想要做的事情而构建的。我的评论不是回答,只是一个建议。@CoryMadden。。。非常感谢你的例子。这就引出了我最初的问题。。。为什么每次迭代都会增加类似操作的时间?从0.000110左右开始。。。升到了0.000143我不知道我明白了。如果您再次执行该操作,则它将递增。如果你刷牙一次,需要2分钟。如果你刷两次,需要4分钟。现在,更准确一点,我们可以说第一次刷牙需要3分钟,因为我们必须去卫生间,准备好牙刷,等等。但是第二次刷牙总共只需要5分钟,因为我们已经在浴室里拿着牙刷了。你的函数是打印出整个循环的时间,我不确定你是否知道。谢谢你的牙刷示例。。。它使我发笑。好吧,如果我已经在浴室里拿着牙刷,那么我肯定会比去浴室拿牙刷花更少的时间。我也知道我正在获取整个循环的时间。但这不是这里发生的事情。。。在随后的迭代中,时间不断增加。我是否应该尝试清理每个循环结束时的内存或环境变量,以查看每个实例的时间是否保持不变或持续增加?我也知道,由于许多因素,每次迭代的时间并不保持不变,但我想弄明白的是,它应该上下波动,而不仅仅是不断增加。:)我必须刷牙,所以它就出现在我的脑海里。在我的示例中,它是线性的,尽管您的代码可能正在做一些缓存结果的事情,或者出于任何原因,某些循环对于计算机来说更容易。