Лучший способ обработки большого списка словарей в Python

Я выполняю статистический тест, который использует 10000 перестановок в качестве нулевого распределения.

Каждая из перестановок – это 10 000 ключевых слов. Каждый ключ представляет собой ген, каждое значение представляет собой набор пациентов, соответствующих гена. Этот словарь программно сгенерирован и может записываться и считываться из файла.

Я хочу иметь возможность перебирать эти перестановки для выполнения моего статистического теста; однако сохранение этого большого списка в стеке замедляет мою производительность.

Есть ли способ сохранить эти словари в сохраненной памяти и получить перестановки, когда я перебираю их?

Спасибо!

Это общая вычислительная проблема; вам нужна скорость хранящихся в памяти данных, но не хватает памяти. У вас есть по крайней мере следующие варианты:

  • Купите больше ОЗУ (очевидно)
  • Пусть процесс обменивается. Это оставляет OS для решения, какие данные хранить на диске и хранить в памяти
  • Не загружайте все в память сразу

Поскольку вы выполняете итерирование по вашему набору данных, одним из решений может быть загрузка данных лениво:

def get_data(filename): with open(filename) as f: while True: line = f.readline() if line: yield line break for item in get_data('my_genes.dat'): gather_statistics(deserialize(item)) 

Вариант состоит в том, чтобы разделить ваши данные на несколько файлов или сохранить ваши данные в базе данных, чтобы вы могли одновременно обрабатывать ваши данные по n элементам.