在玩弄 的 python 执行时time,我发现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,但情况似乎并非如此。有没有人可以解释导致这种行为的原因,或者指出导致结果偏向一个方向的代码逻辑的潜在缺陷?
森林海
摇曳的蔷薇
相关分类