Forwarded from Just Xor
🐍 Генераторные выражения в Python - один из самых простых способов экономить память.
Обычный list comprehension сразу создаёт весь список:
А generator expression вычисляет значения только по мере необходимости:
То есть миллион элементов не хранится в памяти одновременно.
Можно получать значения по одному:
или передать генератор напрямую в:
Главный плюс - lazy evaluation.
Особенно полезно для:
- больших файлов;
- потоков данных;
- длинных последовательностей;
- ETL-пайплайнов;
- обработки данных, которые не нужно хранить целиком.
Но есть нюанс: генератор одноразовый.
После того как значения закончились, пройти по нему повторно уже нельзя.
Маленький синтаксический приём, который может заметно уменьшить потребление памяти.
#Python #Programming #Backend #DataEngineering
Обычный list comprehension сразу создаёт весь список:
squares = [x ** 2 for x in range(1_000_000)]
А generator expression вычисляет значения только по мере необходимости:
squares = (x ** 2 for x in range(1_000_000))
То есть миллион элементов не хранится в памяти одновременно.
Можно получать значения по одному:
next(squares)
или передать генератор напрямую в:
sum(...)
max(...)
any(...)
all(...)
Главный плюс - lazy evaluation.
Особенно полезно для:
- больших файлов;
- потоков данных;
- длинных последовательностей;
- ETL-пайплайнов;
- обработки данных, которые не нужно хранить целиком.
Но есть нюанс: генератор одноразовый.
После того как значения закончились, пройти по нему повторно уже нельзя.
Маленький синтаксический приём, который может заметно уменьшить потребление памяти.
#Python #Programming #Backend #DataEngineering
👍5❤3