У меня есть следующий рабочий процесс, посредством которого я добавляю данные в пустой объект pandas Series. (Этот пустой массив также может быть массивом NumPy или даже списком c.)
in_memory_array = pd.Series([])
for df in list_of_pandas_dataframes:
new = df.apply(lambda row: compute_something(row), axis=1) ## new is a pandas.Series
in_memory_array = in_memory_array.append(new)
Моя проблема в том, что результирующий массив in_memory_array
становится слишком большим для оперативной памяти. Мне не нужно хранить все объекты в памяти для этого вычисления.
Я думаю, что мои варианты так или иначе выбирают объекты на диск, когда массив становится слишком большим для оперативной памяти, например,
# N = some size in bytes too large for RAM
if sys.getsizeof(in_memory_array) > N:
with open('mypickle.pickle', 'wb') as f:
pickle.dump(in_memory_array, f)
Иначе, есть ли решение вне ядра? В лучшем случае было бы создать такой предел, чтобы объект не мог быть больше, чем X ГБ в ОЗУ.