Pas*_*ist 1 python memory optimization
代码
import array, itertools
a = array.array('B', itertools.repeat(0, 3715948544))
Run Code Online (Sandbox Code Playgroud)
在我的机器上运行大约需要7分钟(6分44秒).该计算机具有8 Gb的RAM,并使用CPython 3.4.3运行Linux.如何更快地获得具有1字节unsigned int条目的类数组对象,最好使用Python标准库?Numpy可以立即分配(不到1毫秒).
a = array.array('B', [0]) * 3715948544
Run Code Online (Sandbox Code Playgroud)
序列乘法,类似于如何创建一个巨大的零列表.请注意,您想要对此巨型阵列执行的任何操作都可能与您最初尝试创建它时一样慢.
如果您确实无法使用 NumPy,您可以尝试使用内置功能可以达到什么程度bytearray:
a = bytearray(3715948544)
Run Code Online (Sandbox Code Playgroud)
这最多应该在几秒钟内完成。