asyncio — Асинхронное ввод-вывод, цикл событий, корутины и задачи
Новое в версии 3.4.
Исходный код: Lib/asyncio/
Примечание
Пакет asyncio включен в стандартную библиотеку на временной основе. Несовместимые с предыдущими версиями изменения (вплоть до удаления модуля) могут произойти, если это сочтут необходимым разработчики ядра.
Этот модуль предоставляет инфраструктуру для написания многопоточной корутинной программы с использованием корутин, мультиплексирования доступа к вводу-выводу через сокеты и другие ресурсы, запуска сетевых клиентов и серверов и других связанных примитивов. Вот более подробный список содержимого пакета:
- подключаемый цикл событий с различными система-зависимыми реализациями;
- абстракции транспорта и протокола (аналогичные тем, что в Twisted);
- конкретная поддержка TCP, UDP, SSL, труб процессов, отложенных вызовов и других (некоторые могут зависеть от системы);
- класс
Future, который имитирует класс из модуляconcurrent.futures, но адаптированный для использования с циклом событий; - корутины и задачи, основанные на
yield from(PEP 380), чтобы помочь написать многопоточную программу последовательным способом; - поддержка отмены для
Futureи корутин; - примитивы синхронизации для использования между корутинами в одном потоке, имитирующие те, что в модуле
threading; - интерфейс для передачи работы в пул потоков, на тот случай, если вам абсолютно необходимо использовать библиотеку, которая делает вызовы блокирующего ввода-вывода.
Асинхронное программирование сложнее классической «последовательной» программы: см. страницу Разработка с asyncio, которая перечисляет распространённые ловушки и объясняет, как их избежать. Включите режим отладки во время разработки, чтобы обнаружить распространённые проблемы.
Содержание:
-
18.5.1. Базовый цикл событий
- 18.5.1.1. Запуск цикла событий
- 18.5.1.2. Вызовы
- 18.5.1.3. Отложенные вызовы
- 18.5.1.4. Будущие
- 18.5.1.5. Задачи
- 18.5.1.6. Создание соединений
- 18.5.1.7. Создание прослушивающих соединений
- 18.5.1.8. Наблюдение за дескрипторами файлов
- 18.5.1.9. Операции с сокетами низкого уровня
- 18.5.1.10. Разрешение имени хоста
- 18.5.1.11. Соединение с каналами
- 18.5.1.12. Сигналы UNIX
- 18.5.1.13. Executor
- 18.5.1.14. API обработки ошибок
- 18.5.1.15. Режим отладки
- 18.5.1.16. Сервер
- 18.5.1.17. Обработка
- 18.5.1.18. Примеры циклов событий
- 18.5.2. Циклы событий
- 18.5.3. Задачи и корутины
- 18.5.4. Транспорты и протоколы (API на основе обратных вызовов)
- 18.5.5. Потоки (API на основе корутин)
-
18.5.6. Подпроцессы
- 18.5.6.1. Цикл обработки событий Windows
- 18.5.6.2. Создание подпроцесса: API высокого уровня с использованием Process
- 18.5.6.3. Создание подпроцесса: API низкого уровня с использованием subprocess.Popen
- 18.5.6.4. Константы
- 18.5.6.5. Процесс
- 18.5.6.6. Подпроцессы и потоки
- 18.5.6.7. Примеры подпроцессов
- 18.5.7. Синхронизирующие примитивы
- 18.5.8. Очереди
-
18.5.9. Разработка с asyncio
- 18.5.9.1. Режим отладки asyncio
- 18.5.9.2. Отмена
- 18.5.9.3. Конкурентность и многопоточность
- 18.5.9.4. Правильное обращение с блокирующими функциями
- 18.5.9.5. Ведение журнала
- 18.5.9.6. Обнаружение объектов корутин, которые никогда не планировались
- 18.5.9.7. Обнаружение исключений, которые никогда не обрабатывались
- 18.5.9.8. Правильное объединение корутин
- 18.5.9.9. Зависшая задача уничтожена
- 18.5.9.10. Закрытие транспортов и циклов обработки событий
См. также
Модуль asyncio был разработан в PEP 3156. Для мотивационного введения в транспорты и протоколы см. PEP 3153.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.5/library/asyncio.html