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