Spec-Zone.ru › Python 3.6

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.1.18.1. Привет, мир с call_soon()
      • 18.5.1.18.2. Отображение текущей даты с call_later()
      • 18.5.1.18.3. Отслеживание дескриптора файла на события чтения
      • 18.5.1.18.4. Установка обработчиков сигналов SIGINT и SIGTERM
  • 18.5.2. Циклы обработки событий
    • 18.5.2.1. Функции цикла обработки событий
    • 18.5.2.2. Доступные циклы обработки событий
    • 18.5.2.3. Поддержка платформ
      • 18.5.2.3.1. Windows
      • 18.5.2.3.2. Mac OS X
    • 18.5.2.4. Политики циклов обработки событий и политика по умолчанию
    • 18.5.2.5. Интерфейс политики цикла обработки событий
    • 18.5.2.6. Доступ к глобальной политике цикла обработки событий
    • 18.5.2.7. Настройка политики цикла обработки событий
  • 18.5.3. Задачи и корутины
    • 18.5.3.1. Корутины
      • 18.5.3.1.1. Пример: корутина "Привет, мир"
      • 18.5.3.1.2. Пример: корутина отображения текущей даты
      • 18.5.3.1.3. Пример: Цепочка корутин
    • 18.5.3.2. InvalidStateError
    • 18.5.3.3. TimeoutError
    • 18.5.3.4. Future
      • 18.5.3.4.1. Пример: Future с run_until_complete()
      • 18.5.3.4.2. Пример: Future с run_forever()
    • 18.5.3.5. Задача
      • 18.5.3.5.1. Пример: Параллельное выполнение задач
    • 18.5.3.6. Функции задач
  • 18.5.4. Транспорты и протоколы (API на основе обратных вызовов)
    • 18.5.4.1. Транспорты
      • 18.5.4.1.1. BaseTransport
      • 18.5.4.1.2. ReadTransport
      • 18.5.4.1.3. WriteTransport
      • 18.5.4.1.4. DatagramTransport
      • 18.5.4.1.5. BaseSubprocessTransport
    • 18.5.4.2. Протоколы
      • 18.5.4.2.1. Классы протоколов
      • 18.5.4.2.2. Обратные вызовы соединения
      • 18.5.4.2.3. Потоковые протоколы
      • 18.5.4.2.4. Протоколы дейтаграмм
      • 18.5.4.2.5. Обратные вызовы управления потоком
      • 18.5.4.2.6. Корутины и протоколы
    • 18.5.4.3. Примеры протоколов
      • 18.5.4.3.1. Протокол клиента TCP эхо
      • 18.5.4.3.2. Протокол сервера TCP эхо
      • 18.5.4.3.3. Протокол клиента UDP эхо
      • 18.5.4.3.4. Протокол сервера UDP эхо
      • 18.5.4.3.5. Регистрация открытого сокета для ожидания данных с использованием протокола
  • 18.5.5. Потоки (API на основе корутин)
    • 18.5.5.1. Функции потоков
    • 18.5.5.2. StreamReader
    • 18.5.5.3. StreamWriter
    • 18.5.5.4. StreamReaderProtocol
    • 18.5.5.5. IncompleteReadError
    • 18.5.5.6. LimitOverrunError
    • 18.5.5.7. Примеры потоков
      • 18.5.5.7.1. Клиент TCP эхо с использованием потоков
      • 18.5.5.7.2. Сервер TCP эхо с использованием потоков
      • 18.5.5.7.3. Получение HTTP заголовков
      • 18.5.5.7.4. Регистрация открытого сокета для ожидания данных с использованием потоков
  • 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.6.7.1. Подпроцесс с использованием транспорта и протокола
      • 18.5.6.7.2. Подпроцесс с использованием потоков
  • 18.5.7. Примитивы синхронизации
    • 18.5.7.1. Блокировки
      • 18.5.7.1.1. Блокировка
      • 18.5.7.1.2. Событие
      • 18.5.7.1.3. Условие
    • 18.5.7.2. Семафоры
      • 18.5.7.2.1. Семафор
      • 18.5.7.2.2. Ограниченный семафор
  • 18.5.8. Очереди
    • 18.5.8.1. Очередь
    • 18.5.8.2. Приоритетная очередь
    • 18.5.8.3. Очередь LIFO
      • 18.5.8.3.1. Исключения
  • 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API