在与组合细胞不同的不同细胞上进行计时

时间:2018-03-01 09:42:46

标签: python numpy jupyter-notebook timeit segments

我正在jupyter笔记本中执行一些单元格的代码计时,我在写一个numpy数组的片段,发现与原始的组合代码相比,分解代码会产生不同的处理时间。

下面是一个最小的示例代码。 首先设置一些值:

import numpy as np
V=10000
K=1000
zrs=np.random.random(V)

然后计时完整代码:

%%timeit
a=np.zeros(V*K)
for n in range(0,K):
    a[n*V:(n+1)*V]=zrs

返回: 每个循环 45.6 ms±2.82 ms(平均值±标准偏差,7次运行,每次10次循环)

但是,如果我在单独的单元格中运行代码,我会得到:

%%timeit
a=np.zeros(V*K)

每循环307μs±2.33μs(平均值±标准偏差,7次运行,每次1000次循环)

并首先声明'a':

a=np.zeros(V*K)

然后在代码的第二部分运行timeit:

%%timeit
for n in range(0,K):
    a[n*V:(n+1)*V]=zrs

每循环9.52 ms±214μs(平均值±标准偏差,7次运行,每次100次循环)

要结束运行完整代码,我得到~46ms并在不同的段中运行代码我得到~10ms!

为什么呢?我很迷惑! 运行代码时我能期待什么?

帮助赞赏:)

Python 3.6.3,jupyter notebook 5.0.0

0 个答案:

没有答案