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()的两次调用返回稍微不同的浮点数吗?
答案 0 :(得分:2)
计时器的分辨率不是无限制的;它定期上涨少量。如果两个调用足够接近,您将看到零值。如果您尝试了大量此类调用,您可能会发现大部分时间差异为零,其余时间差异为几微秒,具体取决于特定系统的速度,硬件详细信息和内核实现。 / p>
答案 1 :(得分:2)
...即使时间总是以浮点数的形式返回,并非所有系统都提供的时间精度高于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!