在使用python执行time
时,我发现在一条语句中调用time.time()
两次时有一个奇怪的行为。在语句执行期间获取time.time()
有一个非常小的处理延迟。你知道吗
例如时间。时间() - 时间。时间()
如果在完美世界中立即执行,则计算结果为0。你知道吗
然而,在现实世界中,这会导致一个非常小的数字,因为在处理器执行第一个命令时有一个假定的延迟时间。时间()计算和下一步。但是,当运行相同的执行并将其与以相同方式计算的变量进行比较时,结果会向一个方向倾斜。你知道吗
请参阅下面的小代码段。 这也适用于非常大的数据集
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到2秒。你知道吗试着把你换成:
将所有关系指定给一个类别。试着采取中间立场:
输出:
另外,我很困惑为什么你认为一个函数调用可能需要0个时间。每次调用至少需要访问系统时钟并将该值复制到某种临时位置。这不是免费的开销在任何当前的计算机。你知道吗
相关问题 更多 >
编程相关推荐