代码
Sub firstSheet()
Sheets(1).Select
End Sub
在我的机器上运行大约需要7分钟(6分44秒)。该计算机具有8 Gb的RAM,并使用CPython 3.4.3运行Linux。如何更快地获得具有1字节unsigned int条目的类数组对象,最好使用Python标准库? Numpy可以立即分配(不到1毫秒)。
答案 0 :(得分:5)
a = array.array('B', [0]) * 3715948544
序列乘法,类似于如何创建一个巨大的零列表。请注意,您想要使用此巨型阵列执行的任何操作都可能与您最初尝试创建它的速度一样慢。
答案 1 :(得分:2)
如果您真的无法使用NumPy,您可以尝试使用内置bytearray
获取的距离:
a = bytearray(3715948544)
这最多应该在几秒钟内完成。
答案 2 :(得分:1)
起初我认为numpy
会是最快的,但正如Sven所指出的那样,bytearray
非常快10000.试试你的运气与bytearray
一起在30亿。
In [1]: import numpy as np
In [2]: import array, itertools
In [3]: %timeit array.array('B', itertools.repeat(0, 10000))
1000 loops, best of 3: 456 µs per loop
In [4]: %timeit np.zeros(10000, dtype='uint8')
1000000 loops, best of 3: 924 ns per loop
In [5]: %timeit bytearray(10000)
1000000 loops, best of 3: 328 ns per loop