Документация Python неофициальный перевод

18.5. asyncio – Асинхронный ввод-вывод, цикл событий, корутины и задачиasyncio – Asynchronous I/O, event loop, coroutines and tasks

Примечание

Пакет asyncio был включен в стандартную библиотеку на временной основе. Обратно несовместимые изменения (вплоть до удаления модуля) могут быть внесены, если основные разработчики сочтут это необходимым.

Новое в версии 3.4.

Исходный код: Lib/asyncio/


Этот модуль предоставляет инфраструктуру для написания однопоточного конкурентного кода с использованием корутин, мультиплексирования доступа к вводу-выводу через сокеты и другие ресурсы, запуска сетевых клиентов и серверов, а также других связанных примитивов. Ниже приведён более подробный список содержимого пакета:

  • подключаемый цикл событий с различными системно-зависимыми реализациями;
  • транспорт и протокол абстракции (аналогичные тем, что в Twisted);
  • конкретная поддержка TCP, UDP, SSL, каналов подпроцессов, отложенных вызовов и других (некоторые могут быть системно-зависимыми);
  • класс Future, который имитирует одноимённый класс из модуля concurrent.futures, но адаптирован для использования с циклом событий;
  • корутины и задачи, основанные на yield from (PEP 380), чтобы помочь писать конкурентный код в последовательном стиле;
  • поддержка отмены для Future и корутин;
  • примитивы синхронизации для использования между корутинами в одном потоке, имитирующие те, что в модуле threading;
  • интерфейс для передачи работы в пул потоков на случай, когда абсолютно необходимо использовать библиотеку, выполняющую блокирующие вызовы ввода-вывода.

Асинхронное программирование сложнее классического «последовательного» программирования: см. страницу Разработка с asyncio, где перечислены распространённые ловушки и объясняется, как их избежать. Включите режим отладки при разработке, чтобы выявлять типичные проблемы.

Содержание:

См. также

Модуль asyncio был спроектирован в PEP 3156. Вводное руководство по транспортам и протоколам см. в PEP 3153.