Форум сайта python.su
Всем привет.
Ситуация следующая: есть машина с небольшими ресурсами:
1 ядро и 1 гиг оперативы
Иногда на этой машине генерится excel с помощью питона(openpyxl)
Вопрос следующий можем ли мы писать построчно в файл методами openpyxl?
Дело в том, что память и проц сильно оверхедятся при записи большого числа строк.
В планах переехать на отдельный микросервис, но не скоро.
Проблема в том, что workbook накапливает много строк в памяти, а потом целиком сливает на диск.
Офлайн
Как говориться месье знает толк в в извращениях. По всей видимости просто не надо писать не xls файл а в обычный.
Офлайн
Формируйте xlsx сами. Там просто zip архив +xml-данные +cтили +(могут быть бинарники сторонних объектов, но полагаю не ваш случай). Возьмите образцовый, Пишите сами xml как текстовый файл, а потом подмешивайте в образцовый файл-архив вместо существующего.
Офлайн
PooHТак в том и дело. Для малых модификаций это либо перепаковка zip на каждое добавление - представляете затраты времени? Либо держать все данные в памяти - практически нулевая надежность и решение уж никак не для слабенького железа. Еще вариант сделать zip Без компрессии. Но опять косяк, данные внутри все равно xml. Я не большой спец по этому формату, но думаю что он требует полной перезаписи контента при обновлении данных и для большинства простых решений опять полная загрузка лога в память.
Там просто zip архив
xammettЯ думаю что это так потому что с xls/xlsx форматом данных иначе и не сделаешь.
Проблема в том, что workbook накапливает много строк в памяти, а потом целиком сливает на диск.
Отредактировано doza_and (Апрель 28, 2017 07:04:08)
Офлайн