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分钟,因为我们已经在浴室里拿着牙刷了。你的函数是打印出整个循环的时间,我不确定你是否知道。谢谢你的牙刷示例。。。它使我发笑。好吧,如果我已经在浴室里拿着牙刷,那么我肯定会比去浴室拿牙刷花更少的时间。我也知道我正在获取整个循环的时间。但这不是这里发生的事情。。。在随后的迭代中,时间不断增加。我是否应该尝试清理每个循环结束时的内存或环境变量,以查看每个实例的时间是否保持不变或持续增加?我也知道,由于许多因素,每次迭代的时间并不保持不变,但我想弄明白的是,它应该上下波动,而不仅仅是不断增加。:)我必须刷牙,所以它就出现在我的脑海里。在我的示例中,它是线性的,尽管您的代码可能正在做一些缓存结果的事情,或者出于任何原因,某些循环对于计算机来说更容易。