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, который в этих версиях не поддерживает символьные устройства. Для поддержки символьных устройств в этих более старых версиях macOS можно вручную настроить SelectorEventLoop на использование SelectSelector или PollSelector. Пример:

import asyncio
import selectors

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

© 2001–2025 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