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:

La resolución del reloj monótono de Windows suele ser de unos 15,6 mseg. La mejor resolución es de 0,5 mseg. La resolución depende del hardware (disponibilidad de HPET) y de la configuración de Windows.

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)