Python

Python Asyncio-Tutorial

Python Asyncio-Tutorial
Die Asyncio-Bibliothek wird in Python 3 eingeführt.4 zum Ausführen von simultanen Singlethread-Programmen. Diese Bibliothek ist beliebter als andere Bibliotheken und Frameworks wegen ihrer beeindruckenden Geschwindigkeit und vielseitigen Verwendung. Diese Bibliothek wird in Python verwendet, um Coroutinen zu erstellen, auszuführen und zu strukturieren und mehrere Aufgaben gleichzeitig zu bearbeiten, ohne die Aufgaben parallel auszuführen. Die Hauptteile dieser Bibliothek sind im Folgenden definiert:

Koroutine: Der Teil des Codes, der in Multithread-Skripten angehalten und fortgesetzt werden kann, wird als Coroutine bezeichnet. Coroutinen arbeiten kooperativ in Multithread-Programmen. Wenn eine Coroutine pausiert, kann eine andere Coroutine ausgeführt werden.

Ereignisschleife: Es wird verwendet, um die Ausführung von Coroutinen zu starten und Ein-/Ausgabeoperationen abzuwickeln. Es braucht mehrere Aufgaben und erledigt sie.

Aufgabe: Die Ausführung und das Ergebnis von Coroutinen werden durch die Tasks definiert. Sie können mit der asyncio-Bibliothek mehrere Aufgaben zuweisen und die Aufgaben asynchron ausführen.

Zukunft: Es fungiert als zukünftiger Speicher, in dem das Ergebnis von Coroutinen nach Abschluss gespeichert wird. Dies ist nützlich, wenn eine Coroutine auf das Ergebnis einer anderen Coroutine warten muss.

Wie Sie die oben genannten Konzepte der asyncio-Bibliothek implementieren können, wird in diesem Tutorial anhand einiger einfacher Beispiele gezeigt.

Beispiel-1: Erstellen einer einzelnen Coroutine mit einer einzelnen Aufgabe

Erstellen Sie eine Datei mit dem Namen asynchron1.py und füge den folgenden Code hinzu. asyncio-Bibliothek wird importiert, um die Funktionen dieser Bibliothek zu nutzen. hinzufügen Funktion ist deklariert, um die Summe eines bestimmten Zahlenbereichs zu berechnen. Der Nummernbereich von 1 bis 101 wird von der Task mit einer Sekunde Verzögerung vergeben. Die Ereignisschleife wird so deklariert, dass sie ausgeführt wird, bis alle Aufgaben der Hauptmethode abgeschlossen sind. Nach der Berechnung des Wertes wartet die Funktion eine Sekunde und druckt das Ergebnis.

Asyncio importieren
async def add(start,end,wait):
#Summenvariable initialisieren
Summe = 0
#Berechnen Sie die Summe aller Zahlen
für n im Bereich (Anfang, Ende):
Summe += n
#Warten Sie auf zugewiesene Sekunden
asyncio erwarten.schlafen (warte)
#Drucken Sie das Ergebnis aus
print(f'Summe von start bis end ist sum')
async def main():
#Eine einzelne Aufgabe zuweisen
Aufgabe=Schleife.create_task(add(1,101,1))
#Aufgabe asynchron ausführen
asyncio erwarten.warten ([Aufgabe])
if __name__ == '__main__':
#Ereignisschleife deklarieren
Schleife = asyncio.get_event_loop()
#Führe den Code aus, bis alle Aufgaben abgeschlossen sind
Schleife.run_until_complete(main())
#Schließen Sie die Schleife
Schleife.schließen()

Ausgabe:

$ python3 async1.py

Die Ausgabe zeigt die Summe von 1 bis 101, die 5050 ist.

Beispiel-2: Mehrere Coroutinen erstellen

Die Verwendung der asyncio-Bibliothek wird gelöscht, wenn Sie mehrere Coroutinen gleichzeitig ausführen. Erstellen Sie eine neue Datei mit dem Namen asynchron2.py und füge den folgenden Code hinzu. Es werden drei Aufgaben mit drei unterschiedlichen Bereichen und Wartewerten in . generiert Main() Methode. Die erste Aufgabe berechnet die Summe von 5 bis 500000, indem sie 3 Sekunden wartet, die zweite Aufgabe berechnet die Summe von 2 bis 300000, indem sie 2 Sekunden wartet, und die dritte Aufgabe berechnet die Summe von 10 bis 1000, indem sie 1 Sekunden wartet. Die Aufgabe mit niedrigen Wartewerten wird zuerst abgeschlossen und die Aufgabe mit hohem Wartewert wird zuletzt abgeschlossen.

Asyncio importieren
async def add(start,end,wait):
#Summenvariable initialisieren
Summe = 0
#Berechnen Sie die Summe aller Zahlen
für n im Bereich (Anfang, Ende):
Summe += n
#Warten Sie auf zugewiesene Sekunden
asyncio erwarten.schlafen (warte)
#Drucken Sie das Ergebnis aus
print(f'Summe von start bis end ist sum')
async def main():
#Erste Aufgabe zuweisen
task1=Schleife.create_task(add(5.500.000,3))
#Zweite Aufgabe zuweisen
task2=Schleife.create_task(add(2.300.000,2))
#Dritte Aufgabe zuweisen
task3=Schleife.create_task(add(10,1000,1))
#Führen Sie die Aufgaben asynchron aus
asyncio erwarten.warten([Aufgabe1,Aufgabe2,Aufgabe3])
if __name__ == '__main__':
#Ereignisschleife deklarieren
Schleife = asyncio.get_event_loop()
#Führe den Code aus, bis alle Aufgaben abgeschlossen sind
Schleife.run_until_complete(main())
#Schließen Sie die Schleife
Schleife.schließen()

Ausgabe:

$ python3 async1.py

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

Beispiel-3: Koroutinen mit Future

Dieses Beispiel zeigt die Verwendung des zukünftigen Objekts der asyncio-Bibliothek. Erstellen Sie eine neue Datei mit dem Namen asynchron3.py und füge den folgenden Code hinzu. In diesem Beispiel sind zwei Aufgaben für die Zukunft zugewiesen. zeige Nachricht Hier wird die Funktion deklariert, um die Nachricht vor der Ausführung der Coroutine und nach Abschluss der Ausführung zu drucken. Die erste Aufgabe wartet 2 Sekunden und wird zuletzt abgeschlossen. Zweite Aufgabe wartet 1 Sekunde und wird zuerst abgeschlossen.

Asyncio importieren
async def show_message(number,wait):
#Drucken Sie die Nachricht
print(f'Aufgabe Nummer wird ausgeführt')
#Warten Sie auf zugewiesene Sekunden
asyncio erwarten.schlafen (warte)
print(f'Aufgabe Nummer ist abgeschlossen')
async def stop_after (wenn):
asyncio erwarten.schlafen (wann)
Schleife.Stopp()
async def main():
#Erste Aufgabe zuweisen
task1=asyncio.sichere_zukunft(show_message(1,2))
print('Zeitplan 1')
#Zweite Aufgabe zuweisen
task2=asyncio.sichere_zukunft(show_message(2,1))
print('Zeitplan 2')
#Führen Sie die Aufgaben asynchron aus
asyncio erwarten.warten([Aufgabe1,Aufgabe2])
if __name__ == '__main__':
#Ereignisschleife deklarieren
Schleife = asyncio.get_event_loop()
#Führen Sie den Code der Hauptmethode aus, bis alle Aufgaben abgeschlossen sind
Schleife.run_until_complete(main())

Ausgabe:

$ python3 async3.py

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

Fazit

Das Grundkonzept der asynchronen Programmierung mit der asyncio-Bibliothek von Python wird hier erklärt. Ich hoffe, Sie werden in der Lage sein, Multithread-Code in Python zu schreiben, nachdem Sie die Beispiele dieses Tutorials geübt haben.

Cursor springt oder bewegt sich zufällig während der Eingabe in Windows 10
Wenn Sie feststellen, dass Ihr Mauszeiger während der Eingabe auf einem Windows-Laptop oder -Computer automatisch und zufällig springt oder sich von s...
So kehren Sie die Scrollrichtung von Maus und Touchpads in Windows 10 um
Maus und Touchpads machen das Rechnen nicht nur einfach, sondern auch effizienter und weniger zeitaufwendig. Wir können uns ein Leben ohne diese Gerät...
So ändern Sie Mauszeiger- und Cursorgröße, Farbe und Schema unter Windows 10
Der Mauszeiger und der Cursor in Windows 10 sind sehr wichtige Aspekte des Betriebssystems. Dies kann auch für andere Betriebssysteme gesagt werden, a...