Spec-Zone.ru › Python 3.13

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

Модуль 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() принимают только дескрипторы сокетов (например, дескрипторы файлов-пайпов не поддерживаются).
  • Пайпы не поддерживаются, поэтому методы 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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/asyncio-platforms.html

Spec-Zone.ru

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