asyncio-platforms.md
1> **Источник:** https://python-all.ru/3.7/library/asyncio-platforms.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Поддержка платформ89Модуль [`asyncio`](https://python-all.ru/3.7/library/asyncio.html#module-asyncio) спроектирован переносимым, однако на некоторых платформах есть тонкие различия и ограничения, обусловленные базовой архитектурой и возможностями платформ.1011## Все платформы1213- [`loop.add_reader()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.add_reader) и [`loop.add_writer()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.add_writer) не могут использоваться для мониторинга файлового ввода/вывода.1415## Windows1617Все циклы событий в Windows не поддерживают следующие методы:1819- [`loop.create_unix_connection()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.create_unix_connection) и [`loop.create_unix_server()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.create_unix_server) не поддерживаются. Семейство сокетов [`socket.AF_UNIX`](https://python-all.ru/3.7/library/socket.html#socket.AF_UNIX) характерно для Unix.20- [`loop.add_signal_handler()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.add_signal_handler) и [`loop.remove_signal_handler()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.remove_signal_handler) не поддерживаются.2122[`SelectorEventLoop`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.SelectorEventLoop) имеет следующие ограничения:2324- [`SelectSelector`](https://python-all.ru/3.7/library/selectors.html#selectors.SelectSelector) используется для ожидания событий сокетов: он поддерживает сокеты и ограничен 512 сокетами.25- [`loop.add_reader()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.add_reader) и [`loop.add_writer()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.add_writer) принимают только дескрипторы сокетов (например, файловые дескрипторы каналов не поддерживаются).26- Каналы не поддерживаются, поэтому методы [`loop.connect_read_pipe()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.connect_read_pipe) и [`loop.connect_write_pipe()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.connect_write_pipe) не реализованы.27- [Подпроцессы](https://python-all.ru/3.7/library/asyncio-subprocess.html#asyncio-subprocess) не поддерживаются, т.е. методы [`loop.subprocess_exec()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.subprocess_exec) и [`loop.subprocess_shell()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.subprocess_shell) не реализованы.2829[`ProactorEventLoop`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.ProactorEventLoop) имеет следующие ограничения:3031- Метод [`loop.create_datagram_endpoint()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.create_datagram_endpoint) не поддерживается.32- Методы [`loop.add_reader()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.add_reader) и [`loop.add_writer()`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.loop.add_writer) не поддерживаются.3334Разрешение монотонных часов в Windows обычно составляет около 15,6 мс. Наилучшее разрешение – 0,5 мс. Разрешение зависит от оборудования (наличие [HPET](https://python-all.ru/3.7/library/asyncio-platforms.html)) и конфигурации Windows.3536### Поддержка подпроцессов в Windows3738[`SelectorEventLoop`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.SelectorEventLoop) в Windows не поддерживает подпроцессы. В Windows вместо этого следует использовать [`ProactorEventLoop`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.ProactorEventLoop):3940```python41import asyncio4243asyncio.set_event_loop_policy(44 asyncio.WindowsProactorEventLoopPolicy())4546asyncio.run(your_code())47```4849Функция [`policy.set_child_watcher()`](https://python-all.ru/3.7/library/asyncio-policy.html#asyncio.AbstractEventLoopPolicy.set_child_watcher) также не поддерживается, поскольку [`ProactorEventLoop`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.ProactorEventLoop) использует другой механизм для наблюдения за дочерними процессами.5051## macOS5253Современные версии macOS полностью поддерживаются.5455macOS \<= 10.85657На macOS 10.6, 10.7 и 10.8 цикл событий по умолчанию использует [`selectors.KqueueSelector`](https://python-all.ru/3.7/library/selectors.html#selectors.KqueueSelector), который не поддерживает символьные устройства в этих версиях. [`SelectorEventLoop`](https://python-all.ru/3.7/library/asyncio-eventloop.html#asyncio.SelectorEventLoop) можно настроить вручную для использования [`SelectSelector`](https://python-all.ru/3.7/library/selectors.html#selectors.SelectSelector) или [`PollSelector`](https://python-all.ru/3.7/library/selectors.html#selectors.PollSelector), чтобы обеспечить поддержку символьных устройств на этих старых версиях macOS. Пример:5859```python60import asyncio61import selectors6263selector = selectors.SelectSelector()64loop = asyncio.SelectorEventLoop(selector)65asyncio.set_event_loop(loop)66```67