Hardasync
Что такое async/await детально?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
async/await (Python 3.5+, PEP 492) — синтаксис для корутин. async def создаёт корутину (вызов возвращает coroutine object, не запускает). await — точка suspension.
import asyncio
async def fetch(session, url):
async with session.get(url) as resp: # async context manager
return await resp.text()
async def main():
async with aiohttp.ClientSession() as session:
# concurrent — запустить несколько, дождаться всех
results = await asyncio.gather(
fetch(session, 'https://a.com'),
fetch(session, 'https://b.com'),
)
asyncio.run(main()) # точка входа- Корутины не запускаются сами — нужен
asyncio.runилиasyncio.create_task; - Blocking operations (
time.sleep,requests.get) тормозят event loop — нужен async-friendly libs (aiohttp, httpx) илиrun_in_executor; async with,async for,task.cancel();- TaskGroup (Python 3.11+) — structured concurrency: автоматически ждёт все задачи, отменяет остальные при ошибке.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.