为什么time.time() - time.time()= 0.0?

时间:2018-01-10 21:01:23

标签: python python-3.x time

Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import time
>>> time.time() - time.time()
0.0

为什么会这样?根据我的简单理解,此函数在调用的确切时间以秒为单位返回系统时钟。但是不应该对time.time()的两次调用返回稍微不同的浮点数吗?

4 个答案:

答案 0 :(得分:2)

计时器的分辨率不是无限制的;它定期上涨少量。如果两个调用足够接近,您将看到零值。如果您尝试了大量此类调用,您可能会发现大部分时间差异为零,其余时间差异为几微秒,具体取决于特定系统的速度,硬件详细信息和内核实现。 / p>

答案 1 :(得分:2)

根据docs on time.time

  

...即使时间总是以浮点数的形式返回,并非所有系统都提供的时间精度高于1秒

(我的重点)。对于Python3.3 +而是使用time.perf_counter。 或者对于Python3.2或更早版本,或者为了向后兼容,请使用 timeit.default_timer,它试图为您选择最准确的时钟 系统

答案 2 :(得分:0)

并不总是,只取决于你的cpu调度和时钟:

n, d = 0, 0.0
while d == 0.0:
     d = time.time() - time.time()
     n += 1
print(n, d)

26096 -0.0010001659393310547

答案 3 :(得分:0)

Python的time.time()生成自纪元以来的时间量,以微秒的三分之一来衡量,我喜欢称之为增量。这意味着每秒有300万个增量。

就像时钟只报告时间到最近的秒,python只会报告最接近的delta的时间。因此,如果您的代码可以在时间移动到下一个增量之前完成,它将报告为0.0!