Check

Асинхронность и `asyncio`

Python Senior Яндекс
Объясните разницу между потоками (`threading`) и кооперативной асинхронностью (`asyncio`). Как работает event loop и зачем нужны `await` и `async`?
Ответы
Asyncio и event loop
`asyncio` реализует кооперативную многозадачность: одна OS-нить выполняет множество корутин, которые добровольно уступают управление через `await`. Event loop — цикл событий, который: - планирует задачи (coroutines) и callbacks, - отслеживает готовность I/O (через epoll/kqueue/IOCP), - возобновляет корутины, когда данные готовы. `async def` объявляет корутину, а `await` приостанавливает её выполнение до получения результата awaitable-объекта. В отличие от потоков, переключение задач контролируемое и дешёвое, но только для I/O-bound работы.