asyncio — Асинхронное ввод-вывод, цикл событий, сопрограммы и задачи
Новое в версии 3.4.
Исходный код: Lib/asyncio/
Этот модуль предоставляет инфраструктуру для написания многопоточной кода с использованием сопрограмм, мультиплексирования доступа к вводу-выводу по сокетам и другим ресурсам, запуска сетевых клиентов и серверов, а также других связанных примитивов. Вот более подробный список содержимого пакета:
- подключаемый цикл событий с различными система-специфическими реализациями;
- транспорт и протокол абстракции (аналогичные тем, что в Twisted);
- конкретная поддержка TCP, UDP, SSL, подпроцессов pipes, отложенных вызовов и других (некоторые могут зависеть от системы);
- класс
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. Futures
- 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.2.1. Функции цикла обработки событий
- 18.5.2.2. Доступные циклы обработки событий
- 18.5.2.3. Поддержка платформ
- 18.5.2.4. Политики циклов обработки событий и политика по умолчанию
- 18.5.2.5. Интерфейс политики цикла обработки событий
- 18.5.2.6. Доступ к глобальной политике цикла обработки событий
- 18.5.2.7. Настройка политики цикла обработки событий
- 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.6/library/asyncio.html