uvloop est un remplacement rapide et instantané de la boucle d'événements asyncio intégrée. uvloop est implémenté dans Cython et utilise libuv sous le capot.
La documentation du projet peut être trouvée ici. Veuillez également consulter le wiki.
uvloop rend asyncio 2 à 4x plus rapide.
Le graphique ci-dessus montre les performances d'un serveur d'écho avec différentes tailles de message. Le benchmark sockets utilise les méthodes loop.sock_recv()
et loop.sock_sendall()
; le benchmark streams utilise des flux asyncio de haut niveau, créés par la fonction asyncio.start_server()
; et le test de protocole utilise loop.create_server()
avec un simple protocole d'écho. Apprenez-en davantage sur uvloop dans un article de blog à ce sujet.
uvloop nécessite Python 3.8 ou supérieur et est disponible sur PyPI. Utilisez pip pour l'installer :
$ pip installer uvloop
Notez qu'il est fortement recommandé de mettre à niveau pip avant d'installer uvloop avec :
$ pip installer -U pip
Depuis uvloop 0.18, la manière préférée de l'utiliser est via la fonction d'assistance uvloop.run()
:
import uvloop
async def main ():
# Main entry-point.
...
uvloop . run ( main ())
uvloop.run()
fonctionne en configurant simplement asyncio.run()
pour utiliser uvloop, en lui transmettant tous les arguments, tels que debug
, par exemple uvloop.run(main(), debug=True)
.
Avec Python 3.11 et versions antérieures, l'extrait alternatif suivant peut être utilisé :
import asyncio
import sys
import uvloop
async def main ():
# Main entry-point.
...
if sys . version_info >= ( 3 , 11 ):
with asyncio . Runner ( loop_factory = uvloop . new_event_loop ) as runner :
runner . run ( main ())
else :
uvloop . install ()
asyncio . run ( main ())
Pour créer uvloop, vous aurez besoin de Python 3.8 ou supérieur :
Clonez le dépôt :
$ git clone --recursive [email protected]:MagicStack/uvloop.git $ cd uvloop
Créez un environnement virtuel et activez-le :
$ python3 -m venv uvloop-dev $ source uvloop-dev/bin/activer
Installer les dépendances de développement :
$ pip install -e .[dév]
Créez et exécutez des tests :
$ faire $ faire un test
uvloop est sous double licence sous les licences MIT et Apache 2.0.