Лучший способ сохранить большой список словарей и постоянно добавлять новый элемент в Python - PullRequest
0 голосов
/ 03 сентября 2018

Я создаю большой список ~ 50'000 элементов, каждый из которых представляет собой большой словарь. С тех пор как я начал, у меня было несколько проблем.

  1. Во-первых, я просто попытался выполнить все 50 000 итераций (одна итерация = один новый вычисленный элемент списка) и в конце сохранить список размером 50 000. Но я так и не достиг конца, мое ядро ​​обычно всегда умирало раньше.

  2. Следовательно, я решил на каждых 500 итерациях загружать существующие списки, добавлять 500 новых элементов и сохранять обновленный список, используя pickle. Но мое ядро ​​раньше умирало при загрузке или сохранении сохраненного списка, что делало мой список сохранения бесполезным, так как при попытке открыть его у меня возникает ошибка, такая как: «закончились входные данные».

  3. для решения этой проблемы я сохранял каждые 500 итераций, как в # 2, но на этот раз я сохраняю и два последних сохраненных списка, на случай, если мое ядро ​​погибнет и сломает мой последний сохраненный список.

Сейчас я ищу четвертое решение, которое было бы более пихотичным и эффективным способом решения этой проблемы. На данный момент он работает, но он берет возрасты, так как каждые 500 итераций он загружает и сохраняет список, который занимает около 15 млн! Я видел, что cPickle со специальным значением протокола должен быть быстрее, но по какой-то причине я не могу его скачать. Я думал, что, возможно, использовать текстовый файл или другой может быть лучше? Я мог бы открыть его и добавлять на каждой итерации новый элемент списка. Но я не уверен с точки зрения памяти, если это лучший способ, так как у меня всегда был бы открыт этот список дыр.

Пожалуйста, любое понимание очень поможет.

...