Оптимизация кода с помощью генераторов в Python



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

Что такое генераторы?
Генераторы — это функции, которые используют yield вместо return. Они не возвращают сразу все значения, а запоминают своё состояние и отдают результат по мере необходимости. Это особенно полезно при обработке больших объемов данных, так как позволяет не загружать всю информацию в память сразу.

Пример: экономия памяти
Допустим, нам нужно обработать миллион чисел и взять из них только четные. Обычный способ:

def get_even_numbers(n):
result = []
for i in range(n):
if i % 2 == 0:
result.append(i)
return result

numbers = get_even_numbers(10**6)
print(len(numbers)) # 500000


Такой код загружает в память весь список, что может быть проблемой при больших данных.

А теперь переделаем на генератор:

def get_even_numbers_gen(n):
for i in range(n):
if i % 2 == 0:
yield i

numbers = get_even_numbers_gen(10**6)
print(sum(1 for _ in numbers)) # 500000


Здесь список не создается, а элементы выдаются по одному. Это экономит память и ускоряет обработку!

Где применять?
✔️ Чтение больших файлов построчно (yield line)
✔️ Работа с потоками данных
✔️ Генерация последовательностей без создания списков

👉 @BookPython
Просмотры: 1 590
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти