Soporte de plataforma

El módulo asyncio está diseñado para ser portátil, pero algunas plataformas tienen diferencias y limitaciones sutiles debido a la arquitectura y las capacidades subyacentes de las plataformas.

Todas las plataformas

Windows

Código fuente: Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py


Distinto en la versión 3.8: En Windows, ProactorEventLoop es ahora el bucle de eventos predeterminado.

Todos los bucles de eventos en Windows no admiten los métodos siguientes:

SelectorEventLoop tiene las siguientes limitaciones:

ProactorEventLoop tiene las siguientes limitaciones:

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.

Soporte de sub-procesos en Windows

En Windows, el bucle de eventos por defecto ProactorEventLoop soporta subprocesos, mientras que SelectorEventLoop no lo hace.

La función policy.set_child_watcher() tampoco está soportada, ya que ProactorEventLoop tiene un mecanismo diferente para vigilar los procesos hijos.

macOS

Las versiones modernas de MacOS son totalmente compatibles.

macOS <= 10.8

En macOS 10.6, 10.7 y 10.8, el bucle de eventos por defecto utiliza selectors.KqueueSelector, que no soporta dispositivos de caracteres en estas versiones. El SelectorEventLoop puede ser configurado manualmente para usar SelectSelector o PollSelector para soportar dispositivos de caracteres en estas versiones antiguas de macOS. Ejemplo:

import asyncio
import selectors

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