首页 > 解决方案 > 时间增量给出 0.0 输出

问题描述

我试图让时间增量运行线性搜索。当我在调试模式下运行时,delta 变量正在记录差异,但是当作为常规 python 脚本运行时,print 没有给出正确的结果。即使我更改了不准确的时差目标,它也会打印 0.0。

import time
import itertools

def linear_search(arry, target):
    for index, value in enumerate(arry):
        if value == target:
            return True
        return False

k = list(itertools.islice(range(2000000), 1, 2000000, 2))
start = time.time()
linear_search(k, 25)
done = time.time()
delta = done - start 
print(delta)

有人可以帮忙找出打印语句中是否有任何问题吗?

标签: pythonpython-3.x

解决方案


问题可能是time.time()特别是在 Windows 上的解决方案。我相信那里的分辨率显然是 16 毫秒。

有一个不同的包 ( timeit) 更倾向于计时非常短的方法调用。

这是一个例子:

import timeit

setup = '''
def linear_search(arry, target):
    for index, value in enumerate(arry):
        if value == target:
            return True
        return False

k = list(itertools.islice(range(2000000), 1, 2000000, 2))
n = 25
'''

print(timeit.timeit("linear_search(k, n)", setup=setup, number=1000))

这给了我平均0.00021399999999999197超过 1000 次运行


推荐阅读