我在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
目前没有回答
相关问题 更多 >
编程相关推荐