나는 다음과 같은 문제에 직면하고있다 : 나는 큰 데이터 세트 (몇 10GB)를 만들었다. 중첩 된 사전으로 저장된 개체에 대한 정보가 들어있는 각 개체에 대한 항목을 포함하는 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