JET School

Что такое Awaitable?

Awaitable — это объект, который может быть "ожидаем" с помощью ключевого слова await в асинхронной функции. Такие объекты являются основой асинхронного программирования в Python и позволяют писать неблокирующий код.

Что такое awaitable?

Awaitable — это объект, который реализует метод __await__() и может использоваться с оператором await. Это означает, что выполнение текущей функции приостанавливается до тех пор, пока awaitable-объект не завершит свою работу.

Существует два основных типа awaitable-объектов:

  1. Короутины (coroutines) — функции, определённые с помощью async def.
  2. Объекты типа Future или Task — используются в библиотеке asyncio.

Пример: короутина как awaitable

import asyncio


async def приветствие():

print("Привет!")

await asyncio.sleep(1)

print("Как дела?")


async def main():

await приветствие()


asyncio.run(main())

В этом примере приветствие() — это асинхронная функция, которая возвращает awaitable-объект. Используя await, мы приостанавливаем выполнение до завершения этой функции.

Особенности awaitable-объектов

  • Их можно использовать с оператором await.
  • Они позволяют писать неблокирующий код, повышая производительность программы.
  • Обеспечивают эффективную работу с операциями ввода-вывода (I/O), например, с запросами к серверу или работе с файлами.
  • Применяются в библиотеках вроде asyncio, aiohttp, aiomysql и других.

Разница между awaitable и блокирующим кодом

  • Блокирующий код: выполнение останавливается, пока не завершится операция.
  • Awaitable (неблокирующий): выполнение временно приостанавливается, позволяя другим частям программы работать параллельно.

Заключение

Awaitable — это фундаментальный элемент асинхронного программирования в Python. Понимание этого концепта позволяет создавать высокопроизводительные и отзывчивые приложения, особенно в веб-разработке, обработке данных и API-сервисах. Если вы работаете с современными Python-проектами, знание awaitable-объектов обязательно.

Присоединяйтесь к нашим курсам для углубленного изучения области ИТ. Отправьте запрос для получения подробной информации!