Сколько потоков и процессов используется в asyncio
Python
Senior
Без компании
Сколько потоков и процессов используется в asyncio
Ответы
В asyncio используется **один основной поток** и **один процесс**, но он может эффективно управлять множеством корутин (асинхронных задач) в рамках этого потока.
### Ключевые моменты:
- **Один поток** – asyncio работает в одном потоке, переключаясь между корутинами через цикл событий (event loop).
- **Мультипроцессинг** – можно комбинировать с `ProcessPoolExecutor` для CPU-задач, но это уже не чистый asyncio.
- **GIL не мешает** – так как операции I/O освобождают GIL, а корутины кооперативно переключаются.
### Пример:
```
import asyncio
async def task():
print("Running in asyncio")
async def main():
await asyncio.gather(task(), task(), task()) # 3 корутины в одном потоке
asyncio.run(main())
```
Если нужна параллельность для CPU-bound задач, используют `multiprocessing` или `concurrent.futures.ProcessPoolExecutor`.