Sobes.tech
Назад к вопросам
Middle
2

Как остановить генератор на лету и очистить память? Как закрыть генератор?

Компании, где спрашивали
Лига Цифровой ЭкономикиЛига Цифровой Экономики

Ответ от нейросети

sobes.tech AI

В Python генератор можно остановить досрочно с помощью метода close(). Этот метод вызывает внутри генератора исключение GeneratorExit, которое позволяет генератору выполнить очистку (например, освободить ресурсы) перед завершением.

Пример:

def my_generator():
    try:
        yield 1
        yield 2
    except GeneratorExit:
        print("Генератор закрыт")
        raise

gen = my_generator()
print(next(gen))  # 1

# Останавливаем генератор и очищаем память
gen.close()  # Выведет: Генератор закрыт

Если генератор не обрабатывает GeneratorExit, он просто завершится. После вызова close() генератор считается закрытым, и дальнейшие вызовы next() вызовут StopIteration.

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