P
ProggerHub
@proggerhubb1.7K подп.
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 или потоки.
501
просмотров
1159
символов
Нет
эмодзи
Нет
медиа

Другие посты @proggerhubb

Все посты канала →
Почему async/await не делает код параллельным Очень частая о — @proggerhubb | PostSniper