Чем отличается asyncio.create_task() от await coroutine? Когда исполнится задача без await?
В модуле AsyncIO в Python createtask и await выполняют разные функции, связанные с асинхронным выполнением кода:
Читать ответПодготовка к интервью
148 вопросов по asyncio с технических собеседований
Что проверяют на интервью
На странице собраны вопросы по asyncio — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: asyncio, async, python.
Каталог
В модуле AsyncIO в Python createtask и await выполняют разные функции, связанные с асинхронным выполнением кода:
Читать ответВ asyncio есть три основных вида табличных (или контейнерных) объектов для управления асинхронными операциями:
Читать ответСемафор в Python — это механизм синхронизации из модуля threading, который ограничивает количество потоков, одновременно выполняющих определённый участок кода.
Читать ответВ библиотеке asyncio в Python корутины выполняются в рамках одного потока, то есть по умолчанию используется один поток.
Читать ответВ библиотеке asyncio в Python переключением между задачами управляет цикл событий (event loop). Это центральный компонент, который планирует, запускает и переключает выполнение асинхронных задач (корутин).
Читать ответВ Python с использованием asyncio порядок вызова createtask и await влияет на то, когда именно создаётся и запускается асинхронная задача, а также на последовательность логирования и выполнения кода.
Читать ответВ Python для реализации многопоточности и параллелизма часто используются следующие инструменты и библиотеки:
Читать ответEvent Loop постоянно проверяет, какие корутины готовы к выполнению (например, когда завершена операция ввода-вывода), и возобновляет их работу.
Читать ответawait coroutine выполняет корутину в текущей задаче и ждёт её результата. createtask создаёт отдельную Task, позволяя ей продвигаться конкурентно с другими задачами event loop.
Читать ответtime.sleep и синхронный requests блокируют поток event loop. Таймер asyncio.waitfor не сможет вовремя обработать отмену, поэтому такой timeout не гарантирует остановку по настенным часам.
Читать ответБлокирующая для event loop операция долго не возвращает ему управление. Это бывает не только при I/O: построение списка из миллиарда элементов также занимает поток и огромный объём памяти.
Читать ответПлюсы и минусы синхронной и асинхронной парадигм в Python Синхронная: код проще читать, понимать и отлаживать Синхронная: операции ввода-вывода блокируют поток Асинхронная: выполнение не блокируется, поэтому подход…
Читать ответ