uvloop ist ein schneller, direkter Ersatz für die integrierte Asyncio-Ereignisschleife. uvloop ist in Cython implementiert und verwendet unter der Haube libuv.
Die Projektdokumentation finden Sie hier. Bitte schauen Sie sich auch das Wiki an.
UVloop macht Asyncio 2-4x schneller.
Das obige Diagramm zeigt die Leistung eines Echo-Servers mit unterschiedlichen Nachrichtengrößen. Der Sockets -Benchmark verwendet die Methoden loop.sock_recv()
und loop.sock_sendall()
; Der Streams -Benchmark verwendet Asyncio-High-Level-Streams, die von der Funktion asyncio.start_server()
erstellt wurden. und der Protokoll -Benchmark verwendet loop.create_server()
mit einem einfachen Echo-Protokoll. Lesen Sie mehr über uvloop in einem Blogbeitrag darüber.
uvloop erfordert Python 3.8 oder höher und ist auf PyPI verfügbar. Verwenden Sie pip, um es zu installieren:
$ pip uvloop installieren
Beachten Sie, dass dringend empfohlen wird , pip vor der Installation von uvloop zu aktualisieren mit:
$ pip install -U pip
Ab uvloop 0.18 erfolgt die bevorzugte Verwendung über die Hilfsfunktion uvloop.run()
:
import uvloop
async def main ():
# Main entry-point.
...
uvloop . run ( main ())
uvloop.run()
funktioniert, indem es einfach asyncio.run()
für die Verwendung von uvloop konfiguriert und alle Argumente daran übergibt, wie etwa debug
, z. B. uvloop.run(main(), debug=True)
.
Mit Python 3.11 und früher kann das folgende alternative Snippet verwendet werden:
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 ())
Um uvloop zu erstellen, benötigen Sie Python 3.8 oder höher:
Klonen Sie das Repository:
$ git clone --recursive [email protected]:MagicStack/uvloop.git $ cd uvloop
Erstellen Sie eine virtuelle Umgebung und aktivieren Sie sie:
$ python3 -m venv uvloop-dev $ Quelle uvloop-dev/bin/activate
Entwicklungsabhängigkeiten installieren:
$ pip install -e .[dev]
Tests erstellen und ausführen:
$ machen $ test machen
uvloop ist unter MIT- und Apache 2.0-Lizenzen doppelt lizenziert.