Verwenden Sie Await in einem Python-Lambda
Asynchrone Programmierung ist kein Multithreading oder Multiprocessing. Stattdessen handelt es sich um eine gleichzeitige Programmierung, bei der wir eine möglicherweise lang andauernde Aufgabe ausführen und unserem Programm ermöglichen können, auf andere Aufgaben zu reagieren, während diese Aufgabe noch ausgeführt wird, anstatt auf den Abschluss zu warten.
Bei der asynchronen Programmierung können HTTP-Anforderungsaktionen oder Benutzerauswahl viel Zeit in Anspruch nehmen, und daher wäre es intelligent, andere Aufgaben laufen zu lassen, während solche Aktionen noch ausgeführt werden.
In Python können Sie zur asynchronen Programmierung die Funktionen async/await
mit Funktionen verwenden, aber wir tun dies mit lambda
-Funktionen. In diesem Artikel wird die Möglichkeit diskutiert, await
in einer Python-Lambda-Funktion zu verwenden.
Kein async/await lambda
in einem Python-Lamda
Um eine asynchrone Programmierung in Python durchzuführen, benötigen wir ein eingebautes High-Level-Paket namens asyncio
, das die Syntax async/await
verwendet, um eine gleichzeitige Programmierung zu ermöglichen.
Um einen asynchronen Vorgang zu erstellen, können Sie die Schlüsselwörter async
und await
verwenden.
import asyncio
async def main():
print("Action One")
await asyncio.sleep(1)
print("Action Two")
asyncio.run(main())
Ausgang:
Action One
Action Two
Wir haben das Schlüsselwort async
auf die Funktion main()
und das Schlüsselwort await
auf die Anweisung asyncio.sleep()
angewendet; aber wie wenden wir es über lambda
auf eine anonyme Funktion an? Anonyme oder lambda
-Funktionen werden ohne Namen definiert und verwenden das Schlüsselwort lambda
, um dies zu erreichen.
Angenommen, Sie möchten die Zahlen aus Ihrer Liste entfernen, die nicht durch 3 teilbar sind. Wir können die Methode filter()
(eine Funktion höherer Ordnung) verwenden, die eine andere Funktion übernimmt.
Anstatt also eine Funktionsbindung zu definieren, die Sie möglicherweise nicht mehr verwenden, können Sie eine anonyme Funktion mit dem Schlüsselwort lambda
verwenden.
myNums = [1, 2, 3, 4, 5, 6, 7]
myNums = list(filter(lambda x: x % 3 == 0, myNums))
print(myNums)
Ausgang:
[3, 6]
Gibt es jedoch eine Möglichkeit, die asynchronen Fähigkeiten zur lambda
-Funktion hinzuzufügen? Die einfache Antwort ist Nein.
Die Entwickler von Python haben erklärt, dass es keine signifikanten Anwendungsfälle gibt, die das Hinzufügen der async
-Syntax für lambda
rechtfertigen.
Außerdem ist die Benennung von lambda
nicht die richtige Verwendung von lambda
-Funktionen; daher wäre es schwierig, es funktional mit lambda
-Funktionen zu verwenden. Außerdem wird die Übergabe einer async
-Funktion über eine lambda
-Funktion innerhalb einer synchronen Funktion ausgeführt.
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn