Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: asyncio

Сколько потоков и процессов используется при работе asyncio?

Вопрос проверяет понимание модели исполнения asyncio и различие между конкурентностью и параллелизмом.

Короткий ответ

По умолчанию asyncio работает в одном процессе и одном потоке. Все корутины выполняются внутри одного event loop. Параллелизм достигается за счёт неблокирующего ввода-вывода, а не за счёт нескольких ядер. Дополнительные потоки или процессы используются только явно.

Длинный ответ

Определение

Asyncio — это фреймворк для конкурентного выполнения задач на основе event loop и неблокирующих операций ввода-вывода.

Базовая модель asyncio

По умолчанию:

  1. 1 процесс

  2. 1 поток

  3. 1 event loop

  4. Множество корутин

Все корутины:

  • делят один поток

  • переключаются в точках await

Пример:

async def handler():
    await asyncio.sleep(1)

Во время await управление передаётся event loop, который может запустить другую корутину.


Почему это не параллелизм

Asyncio:

  • не использует несколько ядер

  • не выполняет Python-код одновременно

Это конкурентность, а не параллельность.


Когда появляются потоки

Asyncio может использовать пул потоков для блокирующих операций:

loop.run_in_executor(None, blocking_func)

В этом случае:

  • создаётся ThreadPoolExecutor

  • блокирующий код уходит в отдельный поток

  • event loop остаётся отзывчивым


Когда появляются процессы

Для CPU-bound задач можно использовать ProcessPoolExecutor:

loop.run_in_executor(process_pool, cpu_task)

Тогда:

  • создаются отдельные процессы

  • появляется реальный параллелизм


Частая ошибка

Использовать asyncio для CPU-bound задач без executors. Это приводит к блокировке event loop и деградации всей системы.


Краткий вывод

Asyncio по умолчанию — это один поток и один процесс. Масштабирование по CPU достигается только при явном использовании процессов.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Python

    Python

Ключевые слова

#asyncio

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.