Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: async, await, coroutine, event loop, asyncio

Как работают async/await в Python?

Проверяет понимание механизма асинхронного программирования в Python с использованием ключевых слов async и await.

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

async/await в Python — это синтаксический сахар для работы с корутинами. Ключевое слово async объявляет функцию как корутину, которая может приостанавливать своё выполнение. await приостанавливает выполнение корутины до завершения другой корутины или асинхронной операции. Всё это работает на основе event loop, который управляет переключением между задачами.

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

Основы async/await

async/await — это современный подход к асинхронному программированию в Python, введённый в версии 3.5. Он позволяет писать конкурентный код, который выглядит как синхронный, но при этом не блокирует выполнение программы во время ожидания операций ввода-вывода (например, запросы к сети, чтение файлов, работа с базами данных).

Как это работает

Ключевое слово async перед определением функции превращает её в корутину. Корутина — это специальный объект, который может приостанавливать своё выполнение и возобновлять его позже. Ключевое слово await используется внутри корутины для ожидания результата другой корутины или асинхронной операции. Когда выполнение доходит до await, корутина приостанавливается, и управление возвращается в event loop, который может запустить другую корутину.

Пример кода

import asyncio

async def fetch_data(url):
    print(f"Начинаем загрузку {url}")
    await asyncio.sleep(2)  # Имитация долгой операции
    print(f"Загрузка {url} завершена")
    return f"Данные из {url}"

async def main():
    # Запускаем две корутины конкурентно
    task1 = asyncio.create_task(fetch_data("url1"))
    task2 = asyncio.create_task(fetch_data("url2"))
    
    # Ожидаем завершения обеих задач
    result1 = await task1
    result2 = await task2
    print(result1, result2)

# Запускаем event loop
asyncio.run(main())

Где применяется

async/await идеально подходит для задач, связанных с ожиданием внешних ресурсов: веб-скрапинг, работа с API, чат-серверы, обработка большого количества сетевых соединений. Он не ускоряет CPU-интенсивные вычисления, так как Python всё ещё использует один поток для выполнения кода.

Вывод

async/await следует применять в приложениях, где много операций ввода-вывода и требуется высокая производительность без усложнения кода потоками. Это стандартный инструмент для современных асинхронных веб-фреймворков (aiohttp, FastAPI) и библиотек для работы с сетью.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Python

    Python

  • FastAPI

    FastAPI

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

#async

#await

#coroutine

#event loop

#asyncio

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

  • Аватар

    Python Guru

    Sergey Filichkin

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