Prise en charge de la plate-forme

Le module asyncio est conçu pour être portable, mais certaines plates-formes présentent des différences et des limitations subtiles en raison de l'architecture et des capacités sous-jacentes des plates-formes.

Toutes plateformes

Windows

Code source : Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py


Modifié dans la version 3.8: sous Windows, ProactorEventLoop est désormais la boucle d'événements par défaut.

Aucune boucle d'événements sous Windows ne prend en charge les méthodes suivantes :

SelectorEventLoop a les limitations suivantes :

ProactorEventLoop a les limitations suivantes :

La résolution de l'horloge monotone sous Windows est généralement d'environ 15,6 millisecondes. La meilleure résolution est de 0,5 milliseconde. La résolution dépend du matériel (disponibilité de HPET) et de la configuration de Windows.

Prise en charge des sous-processus sous Windows

Sous Windows, la boucle d'événements par défaut ProactorEventLoop prend en charge les sous-processus, contrairement à SelectorEventLoop.

La fonction policy.set_child_watcher() n'est pas non plus prise en charge, car ProactorEventLoop a un mécanisme différent pour surveiller les processus enfants.

macOS

Les versions modernes de macOS sont entièrement prises en charge.

macOS ≤ 10.8

Sur macOS 10.6, 10.7 et 10.8, la boucle d'événements par défaut utilise selectors.KqueueSelector, qui ne prend pas en charge les périphériques de caractères sur ces versions. La SelectorEventLoop peut être configurée manuellement pour utiliser SelectSelector ou PollSelector pour prendre en charge les périphériques de caractères sur ces anciennes versions de macOS. Par exemple :

import asyncio
import selectors

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