我面临以下问题:我创建了一个大型数据集(几个10GB)的python对象。我想创建一个YAML格式的输出文件,其中包含每个对象的条目,其中包含有关保存为嵌套字典的对象的信息。但是,我从不同时在内存中保存所有数据。逐步创建一个YAML文件
输出数据应存储在字典中,将对象名映射到保存的值。一个简单的版本是这样的:
object_1:
value_1: 42
value_2: 23
object_2:
value_1: 17
value_2: 13
[...]
object_a_lot:
value_1: 47
value_2: 11
为了保持低内存占用,我想写出每个对象的条目,并立即以书面后将其删除。我目前的做法如下:
from yaml import dump
[...] # initialize huge_object_list. Here it is still small
with open("output.yaml", "w") as yaml_file:
for my_object in huge_object_list:
my_object.compute() # this blows up the size of the object
# create a single entry for the top level dict
object_entry = dump(
{my_object.name: my_object.get_yaml_data()},
default_flow_style=False,
)
yaml_file.write(object_entry)
my_object.delete_big_stuff() # delete the memory consuming stuff in the object, keep other information which is needed later
基本上我写几本词典,但每次只有一个键,因为对象名称是唯一的,这并不炸毁。这工作,但感觉像有点的黑客,我想问问,如果有人知道的方式来做到这一点更好/适当。
有没有写一个大字典YAML文件,每次一个条目的方式吗?
感谢您的意见,这非常有帮助。我没有意识到内存开销问题。我会检查这是否会成为我数据的问题。 – m00am