Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: asyncio, eventloop, coroutine, nonblocking, selectors

На чём основана асинхронность в Python? Как она работает под капотом?

Проверяет знание механики asyncio и работы цикла событий.

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

Асинхронность в Python строится на event loop — цикле событий, который управляет корутинами и неблокирующими вызовами I/O (через selectors с select/epoll/kqueue). При await корутина отдаёт управление loop, чтобы он мог переключиться на другие задачи, пока ждёт результата I/O.

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

Event Loop:

  • Центральный планировщик, поддерживающий очередь задач и ожидающих колбэков.

Корутины и Future:

  • async def создаёт корутину, возвращающую Future, которую loop завершает по событию.

Неблокирующий I/O:

  • Библиотека selectors абстрагирует системные вызовы для отслеживания готовности дескрипторов.

Рабочий цикл:

  • Loop вызывает методы .send() корутинами до первого await.

  • При блокирующем await задача помещается в очередь ожидания, loop переключается на готовые.

Пример работы:

import asyncio

async def fetch():
    	reader, writer = await asyncio.open_connection('example.com', 80)
    	# …
asyncio.run(fetch())
  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • Python

    Python

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

#asyncio

#eventloop

#coroutine

#nonblocking

#selectors

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

  • Аватар

    Python Guru

    Sergey Filichkin

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