Hardasyncio
Что такое asyncio?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
asyncio — стандартная библиотека для concurrent I/O через async/await и event loop. async def — корутина, await — точка suspension. Event loop — single-threaded, переключается между корутинами при await.
import asyncio
async def fetch(session, url):
async with session.get(url) as resp:
return await resp.text()
async def main():
async with aiohttp.ClientSession() as session:
# concurrent: тысячи connections в одном потоке
results = await asyncio.gather(
fetch(session, 'https://a.com'),
fetch(session, 'https://b.com'),
)
asyncio.run(main()) # точка входаasyncio.create_task(coro)— запланировать как task;- TaskGroup (Python 3.11+) — structured concurrency, лучше
gather; - Блокирующие операции (CPU-bound, sync I/O) —
run_in_executor(отдельный поток); async with,async for, locks/queues/semaphores для синхронизации;- Применения: HTTP client (aiohttp), server (FastAPI), async DB drivers (asyncpg).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.