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

标签 python

在尝试 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

关于python 时间结果不符合预期 : time. time() - time.time(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53733633/

相关文章:

python - 如何使用opencv python将RGB颜色范围更改为红色

python - 带登录名的 Web.py 待办事项列表

python - 如何在具有时区支持的 BigQuery 中设置计划查询(通过 Python SDK)

python - 在函数内使用 os.system()

python - 计算数组中的邻居值

python - 组合 Flask、Bootstrap 和 Dash 应用程序

python - 修复句子 : add space after punctuation but not after decimal points or abbreviations

python - 刚好有 19 行的钻石 python

python - 在 Python 中将数据库表加载到嵌套字典中

python - 我如何理解 ‘user script directory’ 的概念?