Use Await en Python Lambda

Olorunfemi Akinlua 21 junio 2023
Use Await en Python Lambda

La programación asincrónica no es multihilo ni multiprocesamiento. En cambio, es una programación concurrente en la que podemos ejecutar una tarea potencialmente de larga duración y permitir que nuestro programa responda a otras tareas mientras esa tarea aún se está ejecutando en lugar de esperar a que se complete.

Con la programación asincrónica, las acciones de solicitudes HTTP o la selección de usuarios pueden llevar mucho tiempo y, por lo tanto, sería inteligente permitir que se ejecuten otras tareas mientras se siguen realizando dichas acciones.

En Python, para lograr la programación asíncrona, puede usar las características async/await con funciones, pero lo hacemos con funciones lambda. Este artículo discutirá la posibilidad de usar await en una función lambda de Python.

No hay async/await lambda en Python Lambda

Para llevar a cabo la programación asincrónica en Python, necesitamos un paquete de alto nivel integrado llamado asyncio que usa la sintaxis async/await para permitir la programación concurrente.

Para crear una operación asíncrona, puede utilizar las palabras clave async y await.

import asyncio


async def main():
    print("Action One")
    await asyncio.sleep(1)
    print("Action Two")


asyncio.run(main())

Producción :

Action One
Action Two

Aplicamos la palabra clave async a la función main() y la palabra clave await en la instrucción asyncio.sleep(); sin embargo, ¿cómo lo aplicamos a una función anónima vía lambda? Las funciones anónimas o lambda se definen sin nombre y utilizan la palabra clave lambda para lograrlo.

Digamos que quieres eliminar de tu lista los números que no son divisibles por 3. Podemos usar el método filter() (una función de orden superior) que toma otra función.

Entonces, en lugar de definir un enlace de función que quizás no vuelva a usar, puede usar una función anónima usando la palabra clave lambda.

myNums = [1, 2, 3, 4, 5, 6, 7]

myNums = list(filter(lambda x: x % 3 == 0, myNums))

print(myNums)

Producción :

[3, 6]

Sin embargo, ¿hay alguna manera de agregar las capacidades asíncronas a la función lambda? La respuesta simple es no.

Los desarrolladores de Python han declarado que no hay casos de uso significativos para justificar la adición de la sintaxis async para lambda.

Además, la denominación de lambda no es el uso adecuado de las funciones lambda; por lo tanto, sería difícil usarlo funcionalmente con funciones lambda. Además, pasar una función async a través de una función lambda se ejecutará dentro de una función síncrona.

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

Artículo relacionado - Python Lambda