python - 时间增量给出 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)
有人可以帮忙找出打印语句中是否有任何问题吗?
解决方案
问题可能是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 次运行
推荐阅读
- java - 有没有办法从 Camera X 中的固定点进行自动曝光?
- c - 我编写了显示移动公司收入百分比差异的程序
- facebook-marketing-api - 您正在调用已弃用的 Ads API 版本。请更新到最新版本:v9.0
- swift - 组合图像 SwiftUI
- python - 如何使用 for 循环过滤 Pandas 数据框列中的字符串
- python - 检查输入是否存在于文件中
- python - 以更简单的方式创建一个 np.array,然后转移到 csv
- c++ - 尝试将两个文件链接在一起时出现 C++ 编译器错误
- java - 使用 REGEX 从 Java 中的字符串中删除 Unicode 字符
- node.js - 在NodeJS中关闭浏览器时删除cookie