不同于组合单元格的单独单元格上的timeit

2024-04-18 04:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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笔记本5.0.0


Tags: 代码innumpyfornpzeros笔记本jupyter