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

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

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

Windows

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


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

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

У SelectorEventLoop есть следующие ограничения:

У ProactorEventLoop есть следующие ограничения:

Разрешение монотонных часов в 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)