Spec-Zone.ru › Python 3.14

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

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

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

  • loop.add_reader() и loop.add_writer() нельзя использовать для отслеживания операций ввода-вывода с файлами.
  • loop.connect_read_pipe() и loop.connect_write_pipe() нельзя использовать с обычными файлами. Список объектов, поддерживаемых на каждой платформе, см. в разделе Поддерживаемые объекты каналов.

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() не поддерживаются.
  • loop.connect_read_pipe() и loop.connect_write_pipe() принимают только дескриптор, открытый для перекрывающегося ввода-вывода. Сведения о поддерживаемых объектах см. в разделе Поддерживаемые объекты каналов.

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

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

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

macOS

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

macOS <= 10.8

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

import asyncio
import selectors

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

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

Spec-Zone.ru

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