Sobes.tech
Back to questions
Junior — Middle
70

Какое количество потоков используется при выполнении различных корутин в библиотеке asyncio?

Companies where asked
Т-БанкТ-Банк

Answer from AI

sobes.tech AI

В библиотеке asyncio в Python корутины выполняются в рамках одного потока, то есть по умолчанию используется один поток.

Асинхронное выполнение достигается за счёт событийного цикла, который переключается между корутинами, не блокируя поток. Это позволяет эффективно работать с операциями ввода-вывода.

Если нужно использовать несколько потоков, это делается явно с помощью модуля concurrent.futures.ThreadPoolExecutor или ProcessPoolExecutor, но сами корутины asyncio не создают дополнительные потоки.

Пример запуска корутин в одном потоке:

import asyncio

async def task(name):
    print(f"Задача {name} начала работу")
    await asyncio.sleep(1)
    print(f"Задача {name} завершена")

async def main():
    await asyncio.gather(task('A'), task('B'))

asyncio.run(main())

В этом примере обе задачи выполняются асинхронно в одном потоке.