openpyxl заполняет всю оперативную память

Столкнулся с такой проблемой как полное заполнение оперативной памяти. Я написал скрипт который обрабатывает большую Excel таблицу с 200 тыс. строк и 58 столбцов. Как видно на скриншоте простое открытие файла на запись заполняет 88% оперативной памяти. Если начать с ним работать перебирая/перезаписывая ячейки заполнение памяти может достигнуть до 99%.

Вопрос: как обрабатывая такую таблицу снизить потребление оперативной памяти?

Системный монитор


Ответы (2 шт):

Автор решения: nomnoms12

По умолчанию 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()
→ Ссылка
Автор решения: nomnoms12

Помимо использования оптимизированных режимов, вы можете периодически сохранять и заново открывать книгу. На этапе сохранения, openpyxl освободит используемые ресурсы:

wb.save('large_file.xlsx')
wb = load_workbook('large_file.xlsx')
→ Ссылка