uvloop es un reemplazo rápido y directo del bucle de eventos asyncio incorporado. uvloop está implementado en Cython y usa libuv bajo el capó.
La documentación del proyecto se puede encontrar aquí. Consulte también la wiki.
uvloop hace que asyncio sea 2-4 veces más rápido.
El gráfico anterior muestra el rendimiento de un servidor de eco con diferentes tamaños de mensajes. El punto de referencia de sockets utiliza los métodos loop.sock_recv()
y loop.sock_sendall()
; el punto de referencia de transmisiones utiliza transmisiones asyncio de alto nivel, creadas por la función asyncio.start_server()
; y el protocolo de referencia utiliza loop.create_server()
con un protocolo de eco simple. Lea más sobre uvloop en una publicación de blog al respecto.
uvloop requiere Python 3.8 o superior y está disponible en PyPI. Utilice pip para instalarlo:
$pip instalar uvloop
Tenga en cuenta que se recomienda actualizar pip antes de instalar uvloop con:
$ pip instalar -U pip
A partir de uvloop 0.18, la forma preferida de usarlo es mediante la función auxiliar uvloop.run()
:
import uvloop
async def main ():
# Main entry-point.
...
uvloop . run ( main ())
uvloop.run()
funciona simplemente configurando asyncio.run()
para usar uvloop, pasándole todos los argumentos, como debug
, por ejemplo, uvloop.run(main(), debug=True)
.
Con Python 3.11 y versiones anteriores, se puede utilizar el siguiente fragmento alternativo:
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 ())
Para construir uvloop, necesitarás Python 3.8 o superior:
Clonar el repositorio:
$ git clone --recursivo [email protected]:MagicStack/uvloop.git $ cd uvloop
Crea un entorno virtual y actívalo:
$ python3 -m venv uvloop-dev $ fuente uvloop-dev/bin/activar
Instalar dependencias de desarrollo:
$ pip instalar -e .[desarrollo]
Construya y ejecute pruebas:
$ hacer $ hacer prueba
uvloop tiene doble licencia bajo las licencias MIT y Apache 2.0.