Spec-Zone.ru › Python 3.7

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

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

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

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

Windows

Все циклы событий на 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() принимают только дескрипторы сокетов (например, дескрипторы файлов каналов не поддерживаются).
  • Каналы не поддерживаются, поэтому методы loop.connect_read_pipe() и loop.connect_write_pipe() не реализованы.
  • Поддержка подпроцессов не поддерживается, т.е. методы loop.subprocess_exec() и loop.subprocess_shell() не реализованы.

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

  • Метод loop.create_datagram_endpoint() не поддерживается.
  • Методы loop.add_reader() и loop.add_writer() не поддерживаются.

Точность монотонных часов на Windows обычно составляет около 15,6 мс. Лучшая точность — 0,5 мс. Точность зависит от аппаратного обеспечения (доступность HPET) и от конфигурации Windows.

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

SelectorEventLoop на Windows не поддерживает подпроцессы. На Windows следует использовать ProactorEventLoop:

import asyncio

asyncio.set_event_loop_policy(
    asyncio.WindowsProactorEventLoopPolicy())

asyncio.run(your_code())

Функция 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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/asyncio-platforms.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API