Skip to main content
 首页 » 编程设计

python 时间结果不符合预期 : time. time()之time.time()

2025年05月04日22bhlsheji

在尝试 time 的 python 执行时,我发现在一条语句中两次调用 time.time() 时出现奇怪的行为。在语句执行期间获取time.time() 有一个非常小的处理延迟。

例如time.time() - time.time()

如果在完美世界中立即执行,将计算结果为 0。

但是,在现实世界中,这会导致非常小的数字,因为在处理器执行第一次 time.time() 计算和下一次计算时存在假定的延迟。但是,当运行相同的执行并将其与以相同方式计算的变量进行比较时,结果会朝一个方向倾斜。

请参阅下面的小代码片段。 这也适用于非常大的数据集

import time 
 
counts = 300000 
 
def at_once(): 
  first = 0 
  second = 0 
  x = 0 
  while x < counts: 
      x += 1 
      exec_first = time.time() - time.time() 
      exec_second = time.time() - time.time() 
 
      if exec_first > exec_second: 
          first += 1 
      else: 
          second += 1 
 
 
print('1sts: %s' % first) 
print('2nds: %s' % second) 

打印:

1sts: 39630 
2nds: 260370 

除非我的逻辑不正确,否则我希望结果非常接近 50:50,但事实似乎并非如此。是否有人可以解释导致此行为的原因或指出导致结果偏向一个方向的代码逻辑的潜在缺陷?

请您参考如下方法:

难道是exec_first == exec_second?在这种情况下,您的 if-else 会将秒加 1。

尝试将 if-else 更改为类似的内容:

if exec_first > exec_second: 
    first += 1 
elif exec_second > exec_first: 
    second += 1 
else: 
    pass