Поддержка платформ
Модуль 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()принимают только дескрипторы сокетов (например, дескрипторы файлов-каналов не поддерживаются). - Каналы (pipes) не поддерживаются, поэтому методы
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, который не поддерживает символьные устройства в этих версиях. Цикл событий SelectorEventLoop можно вручную настроить для использования SelectSelector или PollSelector, чтобы поддержать символьные устройства в более старых версиях macOS. Пример:
import asyncio import selectors selector = selectors.SelectSelector() loop = asyncio.SelectorEventLoop(selector) asyncio.set_event_loop(loop)
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/asyncio-platforms.html