Как затрачивается CPU в асинхронности

Python Middle Без компании
Как затрачивается CPU в асинхронности
Ответы
В асинхронном Python (asyncio) CPU используется эффективнее, чем в синхронном коде, за счёт кооперативной многозадачности. Поток выполнения освобождается при await, позволяя обрабатывать другие задачи во время ожидания I/O. **Ключевые моменты:** - CPU не блокируется на I/O операциях (сеть, файлы и т.д.) - Один поток может обрабатывать тысячи соединений - Нет накладных расходов на переключение потоков (как в threading) **Пример:** ``` import asyncio async def task(name, delay): print(f"{name} started") await asyncio.sleep(delay) # Освобождает CPU на время ожидания print(f"{name} finished") async def main(): await asyncio.gather( task("A", 2), task("B", 1), ) asyncio.run(main()) ``` **Вывод:** ``` A started B started B finished (через 1 сек) A finished (через 2 сек) ``` **Нюансы:** - CPU-bound задачи (например, вычисления) блокируют event loop — для них нужен отдельный поток/процесс. - Неправильное использование `await` может привести к простою CPU.