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