Как затрачивается 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.