Встречается на собеседованиях • сегодня

Почему реализация асинхронности через asyncio быстрее потоков

Asyncio эффективнее потоков для I/O-bound задач благодаря кооперативной многозадачности. В отличие от потоков, где ОС переключает контекст, asyncio использует event loop и корутины, которые добровольно отдают контроль при await. Это устраняет накладные расходы на:

  • Переключение контекста (в потоках ~1-15 мкс)
  • GIL contention (потоки в Python не работают параллельно из-за GIL)
  • Потребление памяти (каждый поток ~8MB стек)

Пример:

python
import asyncio

async def fetch(url):
    print(f"Start {url}")
    await asyncio.sleep(1)  # Имитация I/O
    print(f"Done {url}")

async def main():
    await asyncio.gather(
        fetch("url1"),
        fetch("url2")  # Выполнятся конкурентно в 1 потоке
    )

asyncio.run(main())

Для CPU-bound задач лучше использовать multiprocessing.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы