l = range(100)
%timeit [i**2 for i in l]
10000 loops, best of 3: 41.6 µs per loop我对如何解释上面的输出感到困惑。
发布于 2017-11-20 01:13:02
[i**2 for i in l]已经被%timeit调用了10000次。
每次执行这行代码时,%timeit都会测量它所用的时间。请注意,%timeit并不总是运行一个操作10000次。它运行一次,并决定操作应该运行多少次。我们的目标是有足够的测量,同时不需要一个小时来给出估计。如果您尝试使用更大的l,%timeit可能只会运行1000次。
您的计算机可能会同时执行一些其他操作(例如,浏览浏览器、播放音乐等)因此,一些执行可能非常慢,不应该被考虑在内。
%timeit从10000次中取出3次最短的执行,并显示它们的平均值。在这些执行过程中,您的计算机可能没有做太多事情,因此相应的时间可能代表了如果您的计算机只专注于此任务所需的时间。
使用%是为了告诉iPython这是一个iPython命令,而不是Python命令。如果你在普通的Python控制台中尝试,它会失败,并显示一个SyntaxError。您也可以在iPython中键入%history。
发布于 2017-11-20 01:04:51
这是%timeit的默认行为,它执行多次运行以获得更健壮的结果。
l = range(100)
%timeit [i**2 for i in l]
10000 loops, best of 3: 41.6 µs per loop不是的。执行循环的次数是1000,它提供了三种执行时间中最好的一种。
https://stackoverflow.com/questions/47379352
复制相似问题