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

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

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

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

Окна

Исходный код: Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.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

В Mac OS 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)
Вернуться на верх