将此浮点数组保存到文本文件中,将创建一个24M文本文件。当您重新加载该文件时,numpy会逐行浏览文件,解析文本并重新创建对象。
我希望这段时间内存使用量会激增,因为numpy在到达文件末尾之前不知道结果数组需要多大,所以我希望至少有24M + 8M +其他使用的临时内存。
这是numpy代码的相关部分,来自/lib/npyio.py
:
# Parse each line, including the first
for i, line in enumerate(itertools.chain([first_line], fh)):
vals = split_line(line)
if len(vals) == 0:
continue
if usecols:
vals = [vals[i] for i in usecols]
# Convert each value according to its column and store
items = [conv(val) for (conv, val) in zip(converters, vals)]
# Then pack it according to the dtype's nesting
items = pack_items(items, packing)
X.append(items)
#...A bit further on
X = np.array(X, dtype)
不必担心额外的内存使用情况,因为这只是python的工作方式- 尽管您的python进程似乎正在使用100M内存,但在内部它会保持对不再使用哪些项的了解,并将对其进行重用记忆。例如,如果要在一个程序中重新运行此保存加载过程(保存,加载,保存,加载),则内存使用量不会增加到200M。