Підтримка платформи

Модуль 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 має такі обмеження:

The resolution of the monotonic clock on Windows is usually around 15.6 milliseconds. The best resolution is 0.5 milliseconds. The resolution depends on the hardware (availability of HPET) and on the Windows configuration.

Підтримка підпроцесів у 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)