openpyxl заполняет всю оперативную память
Столкнулся с такой проблемой как полное заполнение оперативной памяти. Я написал скрипт который обрабатывает большую Excel таблицу с 200 тыс. строк и 58 столбцов. Как видно на скриншоте простое открытие файла на запись заполняет 88% оперативной памяти. Если начать с ним работать перебирая/перезаписывая ячейки заполнение памяти может достигнуть до 99%.
Вопрос: как обрабатывая такую таблицу снизить потребление оперативной памяти?
Ответы (2 шт):
По умолчанию openpyxl сохраняет в оперативную память всю таблицу. Но вы можете использовать оптимизированные режимы, чтобы снизить потребление памяти:
from openpyxl import load_workbook
wb = load_workbook(filename='large_file.xlsx', read_only=True)
ws = wb['big_data']
for row in ws.rows:
for cell in row:
print(cell.value)
# Close the workbook after reading
wb.close()
Помимо использования оптимизированных режимов, вы можете периодически сохранять и заново открывать книгу. На этапе сохранения, openpyxl освободит используемые ресурсы:
wb.save('large_file.xlsx')
wb = load_workbook('large_file.xlsx')
