> **Источник:** https://python-all.ru/3.13/library/asyncio-platforms.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

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

Модуль [`asyncio`](https://python-all.ru/3.13/library/asyncio.html#module-asyncio) спроектирован переносимым, однако на некоторых платформах есть тонкие различия и ограничения, обусловленные базовой архитектурой и возможностями платформ.

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

- [`loop.add_reader()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.add_reader) и [`loop.add_writer()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.add_writer) не могут использоваться для мониторинга файлового ввода/вывода.

## Windows

**Исходный код:** [Lib/asyncio/proactor\_events.py](https://python-all.ru/src/3.13/Lib/asyncio/proactor_events.py), [Lib/asyncio/windows\_events.py](https://python-all.ru/src/3.13/Lib/asyncio/windows_events.py), [Lib/asyncio/windows\_utils.py](https://python-all.ru/src/3.13/Lib/asyncio/windows_utils.py)

---

Изменено в версии 3.8: В Windows [`ProactorEventLoop`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.ProactorEventLoop) теперь является циклом событий по умолчанию.

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

- [`loop.create_unix_connection()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.create_unix_connection) и [`loop.create_unix_server()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.create_unix_server) не поддерживаются. Семейство сокетов [`socket.AF_UNIX`](https://python-all.ru/3.13/library/socket.html#socket.AF_UNIX) характерно для Unix.
- [`loop.add_signal_handler()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.add_signal_handler) и [`loop.remove_signal_handler()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.remove_signal_handler) не поддерживаются.

[`SelectorEventLoop`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.SelectorEventLoop) имеет следующие ограничения:

- [`SelectSelector`](https://python-all.ru/3.13/library/selectors.html#selectors.SelectSelector) используется для ожидания событий сокетов: он поддерживает сокеты и ограничен 512 сокетами.
- [`loop.add_reader()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.add_reader) и [`loop.add_writer()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.add_writer) принимают только дескрипторы сокетов (например, файловые дескрипторы каналов не поддерживаются).
- Каналы не поддерживаются, поэтому методы [`loop.connect_read_pipe()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.connect_read_pipe) и [`loop.connect_write_pipe()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.connect_write_pipe) не реализованы.
- [Подпроцессы](https://python-all.ru/3.13/library/asyncio-subprocess.html#asyncio-subprocess) не поддерживаются, т.е. методы [`loop.subprocess_exec()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.subprocess_exec) и [`loop.subprocess_shell()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.subprocess_shell) не реализованы.

[`ProactorEventLoop`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.ProactorEventLoop) имеет следующие ограничения:

- Методы [`loop.add_reader()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.add_reader) и [`loop.add_writer()`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.loop.add_writer) не поддерживаются.

Разрешение монотонных часов в Windows обычно составляет около 15,6 миллисекунды. Лучшее разрешение – 0,5 миллисекунды. Разрешение зависит от оборудования (наличие [HPET](https://python-all.ru/3.13/library/asyncio-platforms.html)) и от конфигурации Windows.

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

В Windows цикл событий по умолчанию [`ProactorEventLoop`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.ProactorEventLoop) поддерживает подпроцессы, тогда как [`SelectorEventLoop`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.SelectorEventLoop) – нет.

Функция [`policy.set_child_watcher()`](https://python-all.ru/3.13/library/asyncio-policy.html#asyncio.AbstractEventLoopPolicy.set_child_watcher) также не поддерживается, поскольку [`ProactorEventLoop`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.ProactorEventLoop) использует другой механизм для наблюдения за дочерними процессами.

## macOS

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

macOS \<= 10.8

На macOS 10.6, 10.7 и 10.8 цикл событий по умолчанию использует [`selectors.KqueueSelector`](https://python-all.ru/3.13/library/selectors.html#selectors.KqueueSelector), который не поддерживает символьные устройства в этих версиях. [`SelectorEventLoop`](https://python-all.ru/3.13/library/asyncio-eventloop.html#asyncio.SelectorEventLoop) можно настроить вручную для использования [`SelectSelector`](https://python-all.ru/3.13/library/selectors.html#selectors.SelectSelector) или [`PollSelector`](https://python-all.ru/3.13/library/selectors.html#selectors.PollSelector), чтобы обеспечить поддержку символьных устройств на этих старых версиях macOS. Пример:

```python
import asyncio
import selectors

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