Назад к вопросам
Лига Цифровой Экономики
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(). Это особенно важно, если генератор использует внешние ресурсы (файлы, соединения и т.п.).