Цепочка трансформаций из трёх list comprehension держит в памяти три копии данных
rows = [parse(line) for line in open("events.jsonl")]
valid = [r for r in rows if is_valid(r)]
enriched = [enrich(r) for r in valid]
write_batches(enriched)
На больших файлах скрипт съедает всю память. Как изменить цепочку, сохранив читаемость?
- Заменить списки на генераторы
- Вызывать del rows после каждой строки
- Объединить всё в один list comprehension
- Использовать кортежи вместо списков
