Работа с данными превысила память - PullRequest
0 голосов
/ 30 мая 2011

У меня есть структура данных, которая представляет список объектов и связей между ними. Каждый объект обладает свойством со свойствами, которые могут быть даже вложенными объектами Python.

Иногда эти объекты превышают доступную память из-за большого количества или иногда из-за отдельных больших свойств.

Есть ли простой способ обрабатывать такие данные без исключений памяти?

Если бы у меня были только свойства строк, я мог бы подумать о базах данных графа, но, возможно, есть что-то более простое, что позволило бы мне сохранить структуру данных Python.

Ответы [ 2 ]

1 голос
/ 30 мая 2011

Существует 4 «реальных» решения и 2 «буквально того, что вы хотите»:

  1. Измените схему, чтобы не хранить гигантские фрагменты данных, которые вам не нужны;возможно, вы используете базу данных и вам не нужно извлекать эти фрагменты данных в запросе.
  2. Измените свои цели: возможно, вам не нужно обрабатывать такие вещи.
  3. Перерывпереработка обработки на более мелкие куски, гарантируя, что вы освобождаете неиспользуемые объекты для сбора мусора (выпуская все ссылки).
  4. Купите больше оперативной памяти.

Два решения, которыеБуквально делать то, что вы хотите, не покупая больше оперативной памяти, нужно будет использовать жесткий диск.Таким образом, они будут невероятно медленными.Однако, если ваш размер данных огромен (сотни гигабайт), и у вас есть , чтобы просмотреть все данные, это может быть вашим единственным вариантом (флэш-накопитель может обеспечить хорошее ускорение, но чрезмерная запись скоро будетнаденьте).

  1. Увеличьте размер вашей виртуальной памяти.(В Linux это делается путем увеличения размера вашего раздела подкачки или добавления большего количества разделов подкачки.)
  2. Разбейте обработку на более мелкие куски, выгружая содержимое из ОЗУ на диск посредством сбора мусора, даже есливам может понадобиться снова.
0 голосов
/ 30 мая 2011

Ну, вы могли бы просто установить больше оперативной памяти; -)

Это, безусловно, самое простое решение (хотя я не уверен, насколько оно жизнеспособно в вашем конкретном случае), и, возможно, даже самое дешевое (имейте в виду стоимость изменения кода).

Просто возможность быть в курсе ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...