Подготовка к интервью

Вопросы об asyncio, корутинах и блокировках event loop

14 вопросов с ответами по теме «Asyncio и асинхронные задачи Python»

14 вопросов

Что проверяют на интервью

Как устроена подборка

Подборка о кооперативном выполнении корутин Python и условиях, при которых event loop продолжает обслуживать задачи. Вопросы охватывают запуск, ожидание и отмену, синхронизацию, работу с ресурсами и вынесение блокирующих операций из цикла событий.

Каталог

Вопросы по теме

Найдено: 14
Теория

Каким образом осуществлялось выполнение задач в Python до внедрения асинхронных возможностей?

До появления асинхронных возможностей в Python (до asyncio и async/await) выполнение задач, требующих параллелизма или одновременной работы с несколькими операциями ввода-вывода, осуществлялось преимущественно с помощью:

Читать ответ
Теория

Как устроена асинхронность в Python?

В asyncio корутины кооперативно делят поток event loop: задача выполняется до приостановки, после чего цикл может продвинуть другие готовые задачи или дождаться событий I/O.

Читать ответ
Теория

Что происходит при asyncio.create_task и чем отличается от await coroutine?

await coroutine выполняет корутину в текущей задаче и ждёт её результата. createtask создаёт отдельную Task, позволяя ей продвигаться конкурентно с другими задачами event loop.

Читать ответ
Теория

Можно ли запустить синхронный requests неблокирующе в асинхронном приложении и как это сделать?

Синхронный requests можно выполнить в рабочем потоке, чтобы не занимать event loop. Сам запрос при этом остаётся блокирующим для этого потока.

Читать ответ
Лайвкодинг

Как бы вы реализовали собственный асинхронный таймаут?

Асинхронный timeout ждёт завершения задачи до дедлайна, затем запрашивает отмену и корректно освобождает ресурсы. Это кооперативная отмена, а не принудительное завершение потока.

Читать ответ
Теория

Что произойдёт, если внутри корутины, обёрнутой в asyncio.wait_for с таймаутом, вызвать time.sleep или requests?

time.sleep и синхронный requests блокируют поток event loop. Таймер asyncio.waitfor не сможет вовремя обработать отмену, поэтому такой timeout не гарантирует остановку по настенным часам.

Читать ответ
Теория

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

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

Читать ответ
Теория

В чем преимущества и недостатки синхронной и асинхронной парадигм в Python?

Плюсы и минусы синхронной и асинхронной парадигм в Python Синхронная: код проще читать, понимать и отлаживать Синхронная: операции ввода-вывода блокируют поток Асинхронная: выполнение не блокируется, поэтому подход…

Читать ответ
Теория

Как в Python различаются многопоточность, асинхронность и мультипроцессинг и когда выбирать каждый подход?

Многопоточность, асинхронность и мультипроцессинг в Python Многопоточность: одновременная работа нескольких потоков в рамках одного процесса. Потоки используют общую память и требуют сравнительно небольших ресурсов.…

Читать ответ
Теория

Как реализовать асинхронный контекстный менеджер в Python?

Как реализовать асинхронный контекстный менеджер в Python? Python, асинхронное программирование, контекстные менеджеры Реализовать методы aenter и aexit aenter — асинхронно выполняет вход в контекст (поддерживает…

Читать ответ
Теория

Какие инструменты есть в asyncio и как они применяются?

Инструменты asyncio и области их применения asyncio — стандартная библиотека Python для асинхронного программирования Event loop — центральный механизм, который запускает задачи и управляет их выполнением (coroutines)…

Читать ответ
Теория

Какие примитивы синхронизации используются в asyncio?

Примитивы синхронизации в asyncio Lock: исключает одновременный доступ нескольких задач к одному ресурсу Event: служит для ожидания события и отправки сигнала о нем Condition: объединяет Lock с механизмом ожидания…

Читать ответ