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

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

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

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


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

  • подключаемый цикл событий с различными системно-зависимыми реализациями;

  • транспорт и протокол абстракции (аналогичные тем, что в Twisted);

  • конкретная поддержка TCP, UDP, SSL, каналов подпроцессов, отложенных вызовов и других (некоторые могут быть системно-зависимыми);

  • класс Future, который повторяет класс из модуля concurrent.futures, но адаптирован для использования с циклом событий;

  • корутины и задачи на основе yield from (PEP 380), для написания конкурентного кода в последовательном стиле;

  • поддержка отмены для Futures и корутин;

  • примитивы синхронизации для использования между корутинами в одном потоке, по аналогии с теми, что в модуле threading;

  • интерфейс для передачи работы в пул потоков на случай, когда абсолютно необходимо использовать библиотеку, выполняющую блокирующие вызовы ввода-вывода.

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

Содержание:

См. также

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