Генераторы Python: задачи на ленивые конвейеры и закрытие ресурсов
Генератор может правильно отдавать числа и всё равно оставлять открытый файл после остановки потребителя. Эта подборка посвящена именно таким ошибкам: лишнему чтению из источника, неправильному порядку закрытия и потере исключения. Вы соберёте фильтр, разветвитель потока, скользящее среднее и цепочку закрываемых источников. Вопросы перед практикой проверяют поведение close и GeneratorExit; в задачах нужно довести конвейер до корректного завершения и при обычном исчерпании, и при сбое.
Как заниматься
13 заданий ниже можно проходить по порядку или выбирать нужную проблему. В заданиях на код есть проверка решения; в вопросах — проверка выбранного ответа. Требования к реализации и примеры приведены на страницах заданий.
Вся практика собрана в бесплатном большом задачнике по Python для разработчиков.
Смежная практика
- GeneratorExit и yield при close(): вопрос по генераторам Python
GeneratorExit и yield при close(): вопрос по генераторам Python. Вопрос с проверкой ответа.
Практический Python для разработчиков: большой задачник - Вызов close() до первого next(): выполнится ли finally в генераторе Python
Вызов close() до первого next(): выполнится ли finally в генераторе Python. Вопрос с проверкой ответа.
Практический Python для разработчиков: большой задачник - GeneratorExit и except Exception: закрытие генератора Python
GeneratorExit и except Exception: закрытие генератора Python. Вопрос с проверкой ответа.
Практический Python для разработчиков: большой задачник - Ленивые генераторы Python: порядок вызовов next() в конвейере
Ленивые генераторы Python: порядок вызовов next() в конвейере. Вопрос с проверкой ответа.
Практический Python для разработчиков: большой задачник - Генераторы Python: синхронизация потоков после фильтрации
Генераторы Python: синхронизация потоков после фильтрации. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Генераторы Python: разделите поток между двумя потребителями
Генераторы Python: разделите поток между двумя потребителями. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Генератор скользящего среднего на Python со сбросом окна
Генератор скользящего среднего на Python со сбросом окна. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Генераторы Python: закройте второй источник при ошибке первого
Генераторы Python: закройте второй источник при ошибке первого. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Фильтрация потока Python: исключения и гарантированное закрытие генератора
Фильтрация потока Python: исключения и гарантированное закрытие генератора. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Генератор пачек Python: подтверждение обработки после yield
Генератор пачек Python: подтверждение обработки после yield. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Потоковая запись на Python: ротация файлов и освобождение ресурсов
Потоковая запись на Python: ротация файлов и освобождение ресурсов. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Генераторы Python: объединение закрываемых источников данных
Генераторы Python: объединение закрываемых источников данных. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник - Исправьте остановку генераторного конвейера Python
Исправьте остановку генераторного конвейера Python. Задача с проверкой Python-кода.
Практический Python для разработчиков: большой задачник
