Python Asyncio Tutorial

Python Asyncio Tutorial
Die Asyncio -Bibliothek wird in Python 3 eingeführt.4 Um gleichzeitige Programme auszuführen. Diese Bibliothek ist beliebt als andere Bibliotheken und Frameworks für ihre beeindruckende Geschwindigkeit und verschiedene Verwendung. Diese Bibliothek wird in Python verwendet, um mehrere Aufgaben gleichzeitig zu erstellen, auszuführen und zu strukturieren, ohne die Aufgaben parallel zu erledigen. Die Hauptteile dieser Bibliothek sind unten definiert:

Coroutine: Der Teil des Codes, der in Multi-Threaded-Skript angehalten und wieder aufgenommen werden kann, heißt Coroutine. Coroutinen arbeiten kooperativ im Multi-Thread-Programm. Wenn eine Coroutine pausiert, kann eine andere Coroutine ausführen.

Ereignisschleife: Es wird verwendet, um die Ausführung von Coroutinen zu beginnen und Eingangs-/Ausgangsvorgänge zu verarbeiten. Es erfordert mehrere Aufgaben und erledigte sie.

Aufgabe: Die Ausführung und das Ergebnis von Coroutinen werden durch die Aufgaben definiert. Sie können eine Vielzahl von Aufgaben mithilfe der Asyncio -Bibliothek zuweisen und die Aufgaben asynchron ausführen.

Zukunft: Es fungiert als zukünftiger Speicher, bei dem das Ergebnis von Coroutinen nach Fertigstellung aufbewahrt wird. Dies ist nützlich, wenn Coroutine auf das Ergebnis einer anderen Korutine warten muss.

Wie Sie die oben genannten Konzepte der Asyncio -Bibliothek implementieren können, wird in diesem Tutorial unter Verwendung einiger einfacher Beispiele angezeigt.

Beispiel 1: Erstellen Sie eine einzelne Coroutine mit einer einzigen Aufgabe

Erstellen Sie eine Datei mit dem Namen Async1.py und fügen Sie den folgenden Code hinzu. Die Asyncio -Bibliothek wird importiert, um die Funktionen dieser Bibliothek zu verwenden. hinzufügen Die Funktion wird deklariert, um die Summe eines bestimmten Zahlenbereichs zu berechnen. Der Zahlenbereich von 1 bis 101 wird von der Aufgabe mit einer Sekunde Verzögerung zugewiesen. Die Ereignisschleife wird erklärt, dass sie so lange ausgeführt wird, bis alle Aufgaben der Hauptmethode abgeschlossen sind. Nach der Berechnung des Wertes wartet die Funktion auf eine Sekunde und druckt das Ergebnis aus.

Asyncio importieren
Async def Add (Start, Ende, Warten):
#Initialisieren Sie die Summenvariable
sum = 0
#Calculieren Sie die Summe aller Zahlen
für n in Reichweite (Start, Ende):
sum += n
#Wait für zugewiesene Sekunden
Warten Sie Asyncio.Schlaf (warten)
#Prinke das Ergebnis
print (f'sum von start bis end ist sum ')
Async def Main ():
#Eine einzelne Aufgabe angeben
Task = Loop.create_task (add (1,101,1))
#Run die Aufgabe asynchron
Warten Sie Asyncio.Warten Sie ([Aufgabe])
Wenn __name__ == '__main__':
#Declare Event Loop
Loop = Asyncio.get_event_loop ()
#Run den Code, bis alle Aufgaben erledigt werden
Schleife.run_until_complete (main ())
#Schließen Sie die Schleife
Schleife.schließen()

Ausgang:

$ python3 async1.py

Der Ausgang zeigt die Summe von 1 bis 101, die 5050 beträgt.

Beispiel 2: Erstellen Sie mehrere Coroutinen

Die Verwendung der Asyncio -Bibliothek wird gelöscht, wenn Sie mehrere Coroutinen gleichzeitig ausführen. Erstellen Sie eine neue Datei mit dem Namen Async2.py und fügen Sie den folgenden Code hinzu. Drei Aufgaben werden mit drei verschiedenen Bereichen und Wartewerten in erstellt hauptsächlich() Methode. Die erste Aufgabe berechnet die Summe von 5 bis 500000 durch Warten 3 Sekunden. Die zweite Aufgabe berechnet die Summe von 2 bis 300000, indem Sie 2 Sekunden warten, und die dritte Aufgabe berechnet die Summe von 10 bis 1000, indem Sie 1 Sekunden warten. Die Aufgabe mit niedrigen Wartewerten wird zunächst abgeschlossen und die Aufgabe mit einem hohen Wartewert endlich abgeschlossen.

Asyncio importieren
Async def Add (Start, Ende, Warten):
#Initialisieren Sie die Summenvariable
sum = 0
#Calculieren Sie die Summe aller Zahlen
für n in Reichweite (Start, Ende):
sum += n
#Wait für zugewiesene Sekunden
Warten Sie Asyncio.Schlaf (warten)
#Prinke das Ergebnis
print (f'sum von start bis end ist sum ')
Async def Main ():
#Erste Aufgabe
Task1 = Schleife.create_task (add (5.500000,3))
#Zweite Aufgabe
Task2 = Schleife.create_task (add (2.300000,2))
#Dritte Aufgabe
Task3 = Loop.create_task (add (10,1000,1))
#Run die Aufgaben asynchron
Warten Sie Asyncio.Warten Sie ([Task1, Task2, Task3])
Wenn __name__ == '__main__':
#Declare Event Loop
Loop = Asyncio.get_event_loop ()
#Run den Code, bis alle Aufgaben erledigt werden
Schleife.run_until_complete (main ())
#Schließen Sie die Schleife
Schleife.schließen()

Ausgang:

$ python3 async1.py

Die Ausgabe zeigt, dass Task3 zuerst abgeschlossen ist, da die Wartezeit dieser Aufgabe nur 1 Sekunde betrug und Task1 zuletzt abgeschlossen ist, da die Wartezeit dieser Aufgabe 3 Sekunden betrug.

Beispiel-3: Coroutinen mit Zukunft

Dieses Beispiel zeigt die Verwendung eines zukünftigen Objekts der Asyncio -Bibliothek. Erstellen Sie eine neue Datei mit dem Namen Async3.py und fügen Sie den folgenden Code hinzu. In diesem Beispiel werden zwei Aufgaben für die Zukunft zugewiesen. zeige Nachricht Die Funktion wird hier erklärt, die Nachricht zu drucken, bevor die Coroutine ausgeführt wird, und nach Abschluss der Ausführung. Die erste Aufgabe wird 2 Sekunden lang warten und zuletzt abgeschlossen. Die zweite Aufgabe wird 1 Sekunden lang warten und zuerst erledigen.

Asyncio importieren
Async def show_message (Nummer, Warten Sie):
#Print der Nachricht
print (f'task number läuft ')
#Wait für zugewiesene Sekunden
Warten Sie Asyncio.Schlaf (warten)
print (f'task number ist abgeschlossen ')
Async def stopp_after (wann):
Warten Sie Asyncio.Schlaf (wenn)
Schleife.stoppen()
Async def Main ():
#Erste Aufgabe
task1 = asyncio.sicherstellen (show_message (1,2))
print ('Schedule 1')
#Zweite Aufgabe
task2 = asyncio.sicherstellen (show_message (2,1))
print ('Schedule 2')
#Run die Aufgaben asynchron
Warten Sie Asyncio.Warten Sie ([Task1, Task2])
Wenn __name__ == '__main__':
#Declare Event Loop
Loop = Asyncio.get_event_loop ()
#Run Sie den Code der Hauptmethode, bis alle Aufgaben erledigt werden
Schleife.run_until_complete (main ())

Ausgang:

$ python3 async3.py

In der Ausgabe wird angezeigt, dass der Task1 zuletzt zuerst gestartet und abgeschlossen ist und Task2 später gestartet wird, aber zuerst für kurze Wartezeiten abgeschlossen ist.

Abschluss

Das grundlegende Konzept der asynchronen Programmierung unter Verwendung der Asyncio -Bibliothek von Python wird hier erklärt. Hoffe, Sie können Multi-Thread-Code in Python schreiben, nachdem Sie die Beispiele dieses Tutorials geübt haben.