501просмотров
29.6%от подписчиков
11 февраля 2026 г.
Score: 551
Почему async/await не делает код параллельным Очень частая ошибка у начинающих.
Они видят async и думают, что теперь всё работает одновременно. Нет. async/await это не про параллельность.
Это про неблокирующее ожидание. Простой пример на Python: import asyncio async def task(): print("Начало") await asyncio.sleep(2) print("Конец") asyncio.run(task())
Что происходит? 1. Функция доходит до await.
2. Она не блокирует поток.
3. Управление возвращается в event loop.
4. Когда таймер заканчивается, выполнение продолжается. Но здесь нет второго потока.
Нет второго ядра. Это всё один поток. Чтобы была конкурентность, нужно несколько задач: async def main(): await asyncio.gather(task(), task()) asyncio.run(main())
Теперь две корутины запускаются конкурентно.
Но всё равно это не параллельные вычисления на CPU. Если внутри будет тяжёлый цикл: async def heavy(): while True: pass
Он повесит всё. Потому что event loop не сможет переключиться. Вывод простой: async полезен для: сетевых запросов работы с БД файлов ожидания I/O Он не ускоряет тяжёлые вычисления.
Для этого нужен multiprocessing или потоки.