Verwenden Sie Await in einem Python-Lambda

Olorunfemi Akinlua 21 Juni 2023
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 Akinlua avatar Olorunfemi Akinlua avatar

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

Verwandter Artikel - Python Lambda