В asyncio есть три основных вида табличных (или контейнерных) объектов для управления асинхронными операциями:
Tasks: Объекты, инкапсулирующие сопрограммы (coroutines) и позволяющие планировать их выполнение в цикле событий. Tasks представляют собой более высокоуровневую абстракцию по сравнению с сопрограммами, позволяя их отменять, проверять статус и получать результаты.
python
Futures: Низкоуровневые объекты, представляющие собой результат асинхронной операции, который будет доступен в будущем. Futures могут быть разрешены (resolved) с результатом или исключением. Tasks являются подклассами Futures.
python
Queues: Асинхронные очереди, предназначенные для безопасного обмена данными между несколькими сопрограммами. Они реализуют асинхронные методы put() и get(), которые блокируются до тех пор, пока операция не может быть выполнена (например, очередь полна при put() или пуста при get()).
python
Таблица, обобщающая основные различия:
| Объект | Назначение | Связь | Основные методы |
|---|---|---|---|
| Task | Планирование и управление выполнением сопрограмм | Наследник Future | create_task, cancel, done, result |
| Future | Низкоуровневое представление результата | Базовый класс для Task | set_result, set_exception, done |
| Queue | Безопасный обмен данными между сопрограммами | Используется для communication pattern | put, get, join, task_done, empty, full |