Spec-Zone.ru › Python 3.8

Поддержка платформ

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

Все платформы

  • loop.add_reader() и loop.add_writer() не могут использоваться для мониторинга ввода-вывода файлов.

Windows

Исходный код: Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py

Изменено в версии 3.8: В Windows по умолчанию используется цикл событий ProactorEventLoop.

Все циклы событий в Windows не поддерживают следующие методы:

  • loop.create_unix_connection() и loop.create_unix_server() не поддерживаются. Семейство сокетов socket.AF_UNIX специфично для Unix.
  • loop.add_signal_handler() и loop.remove_signal_handler() не поддерживаются.

Цикл событий SelectorEventLoop имеет следующие ограничения:

  • SelectSelector используется для ожидания событий сокета: поддерживает сокеты и ограничен 512 сокетами.
  • loop.add_reader() и loop.add_writer() принимают только дескрипторы сокетов (например, дескрипторы файлов-каналов не поддерживаются).
  • Каналы (pipes) не поддерживаются, поэтому методы loop.connect_read_pipe() и loop.connect_write_pipe() не реализованы.
  • Поддержка подпроцессов отсутствует, т.е. методы loop.subprocess_exec() и loop.subprocess_shell() не реализованы.

Цикл событий ProactorEventLoop имеет следующие ограничения:

  • Методы loop.add_reader() и loop.add_writer() не поддерживаются.

Точность монотонных часов в Windows обычно составляет около 15,6 мс. Максимальная точность — 0,5 мс. Точность зависит от оборудования (наличие HPET) и конфигурации Windows.

Поддержка подпроцессов в Windows

В Windows по умолчанию используемый цикл событий ProactorEventLoop поддерживает подпроцессы, в то время как SelectorEventLoop — нет.

Функция policy.set_child_watcher() также не поддерживается, так как ProactorEventLoop имеет другой механизм для отслеживания дочерних процессов.

macOS

Современные версии macOS полностью поддерживаются.

macOS <= 10.8

В macOS 10.6, 10.7 и 10.8 по умолчанию используется цикл событий с selectors.KqueueSelector, который не поддерживает символьные устройства в этих версиях. Цикл событий SelectorEventLoop можно вручную настроить для использования SelectSelector или PollSelector, чтобы поддержать символьные устройства в более старых версиях macOS. Пример:

import asyncio
import selectors

selector = selectors.SelectSelector()
loop = asyncio.SelectorEventLoop(selector)
asyncio.set_event_loop(loop)

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/asyncio-platforms.html

Spec-Zone.ru

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