Что считается блокирующей операцией в asyncio? Является ли формирование списка из миллиарда элементов блокирующим?

Блокирующая для event loop операция долго не возвращает ему управление. Это бывает не только при I/O: построение списка из миллиарда элементов также занимает поток и огромный объём памяти.

Короткий ответ

Что ответить на собеседовании

Блокирующая для event loop операция долго не возвращает ему управление. Это бывает не только при I/O: построение списка из миллиарда элементов также занимает поток и огромный объём памяти.

Подробный разбор

Ответ с пояснениями

Блокирующая для event loop операция долго не возвращает ему управление. Это бывает не только при I/O: построение списка из миллиарда элементов также занимает поток и огромный объём памяти.

Пока синхронный цикл строит список, другие корутины в этом event loop не выполняются. Лучше не материализовывать ненужные данные, использовать потоковую обработку и ограниченные порции. Тяжёлые вычисления выносят в отдельный исполнитель, обычно процессы; выбор зависит от работы кода с GIL. Блокирующий код в asyncio.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку