При преобразовании журнала DEAP (по сути, списка словарей) с примерно 10-миллионными записями в Dataframe для дальнейшей обработки я получил сообщение о переполнении ОЗУ в Google Colab.
Я использую пакет DEAP для некоторых экспериментов, так как моя машина медленная и старая, я помогаю себе с сервисом Colab от Google.
Результатом симуляции является журнал DEAP, это список словарей. Каждый словарь представляет собой сводку важных значений скриншота симуляции.
Я превратил этот список словарей в Dataframes для анализа, но для самых больших симуляций процесс завершается сбоем из-за превышения выделенной оперативной памяти.
В словарях хранятся такие значения:
logbook[-1]
{'avg': 16.72180244532359,
'b_ratio': 5,
'best': 0.006420736818512296,
'births': 80160,
'cx_pb': 0.9,
'exp': 128,
'k_par': 6,
'k_sur': 6,
'med': 2.6377157552245727,
'mut_pb': 0.9,
'mut_sig': 7.5,
'pop': 160,
'rep': 40,
'seed': 112,
'std': 20.059567935625164,
'worst': 55.23488779660829}
И журналы, которые я заинтересован в хранении в качестве фреймов данных панд, имеют размер от 10 до 12 мм. Позже я уменьшу это число примерно до пятой.
После травления и снятия журнала я вижу, что я использую около 7,7 ГБ из выделенных 12,7 ГБ.
Я пробовал:
from itertools import chain
fitness_res = pd.DataFrame(list(chain.from_iterable(logbook)))
и
pop_records = [record for record in logbook]
fitness_res = pd.DataFrame(pop_records)
без успеха.
Я получил ошибку:
Your session crashed after using all available RAM. View runtime logs
Я ожидаю, что у меня будет дата-фрейм со всеми данными в журнале DEAP.