Выбор ответа Junior Функции, замыкания, генераторы спрашивают часто обновлено
Зачем генераторы
Вопрос
Нужно обработать CSV на 5 ГБ построчно. Чем генератор с yield лучше функции, возвращающей массив строк?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Строки отдаются по одной, в памяти только текущая. Функция с yield возвращает объект Generator, а код выполняется по мере перебора: прочитали строку, отдали, забыли.
Варианты ответа
- Генератор читает файл в несколько потоков параллельно
- Строки отдаются по одной, в памяти только текущаяправильный ответ
- Генератор кеширует файл и ускоряет повторный проход по нему
- Генератор автоматически сжимает прочитанные строки в памяти
Разбор
Функция с yield возвращает объект Generator, а код выполняется по мере перебора: прочитали строку, отдали, забыли. Потребление памяти не зависит от размера файла. Многопоточности генераторы не дают, повторно пройти генератор нельзя (он одноразовый), сжатия нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.