Python中最精确的时间函数

3

我正在尝试构建一个与非常短的时间差有关的程序,我需要一种非常准确的方法来知道一条语句花费了多少时间。 当我使用time.time()时,即使有数百个字符,它也显示花费了0.0秒。(我在之前和之后测量time.time(),然后相减。) 我检查了一下Python是如何逐个字符比较字符串的,代码如下:

time1 = time.time()
print s1 == s2
print (time.time() - time1)
time2 = time.time()
print s1 == s3
print time.time() - time2

(当s1,s2,s3是非常长的字符串时,s2与s1相同但最后一个字符不同,而s3与s3相同只是第一个字符不同) 但我处理的情况是一个大约10个字符的字符串,有时甚至更少,我需要找出它与其他东西相比需要多少时间。 有什么帮助吗?
编辑: time.clock() 对我非常有效 - 它比time.time()(在Windows上)更准确。

3
timeit是Python标准库中的一个模块,用于测量代码片段的执行时间。它提供了一种简单易用的方法来评估给定操作的性能,以便更好地优化代码。它可以作为命令行工具或Python程序使用,并且可以在不同平台和操作系统上运行。timeit允许您多次运行代码并计算平均执行时间,从而提供更准确的结果。 - undefined
1
@NightShadeQueen 我发现在Windows上,time.clock()比time.time()更准确,它的精度更高。实际上,timeit.default_timer也可以达到相同的效果,所以谢谢你的建议 :) - undefined
看起来 time.clock() 已经被弃用了;然而,在 Windows 上,我发现 time.perf_counter_ns() 提供比 time.time() 更精确的计时。详见 https://docs.python.org/3/library/time.html#time.perf_counter_ns 获取更多详情。 - undefined
1个回答

4
你想要 time.perf_counter()
一个具有最高可用分辨率的时钟,用于测量短时间间隔。 timeit.default_timer() 在Python 3上使用它。在Python 2上,它在Windows上调用 time.clock() ,在其他系统上调用 time.time()time.clock()time.perf_counter() 都在Windows上使用 QueryPerformanceCounter() ,因此您可以在Windows上同时在Python 2和3上使用 timeit.default_timer()

time.perf_counter() (通过 pymonotonic(NULL)) 在 Linux 上调用 clock_gettime(CLOCK_HIGHRES),在 OS X 上调用 mach_absolute_time()。你也可以使用 Python 2 中的 ctypes 调用 clock_gettime()(或找到一个为您执行此操作的后移版)。


1
time.perf_counter_ns()现在可用,并且在某些情况下可能是更好的选择,因为它允许用户“避免浮点类型引起的精度损失”(https://docs.python.org/3/library/time.html#time.perf_counter)。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接