En Python, para definir una función asíncrona, se utiliza la palabra clave «async» antes de la definición de la función. Además, dentro de la función, se utilizan las palabras clave «await» y «async with» para realizar operaciones asíncronas.
instalacion:
pip install asyncio
Ejemplo de una función asíncrona que espera una tarea por un segundo y luego devuelve un mensaje:
–
import asyncio
async def espera():
await asyncio.sleep(1)
return "Hola mundo!"
asyncio.run(espera())
En este ejemplo, utilizamos la función asyncio.sleep()
para esperar un segundo antes de devolver el mensaje «Hola mundo!».
Ejemplo de una función asíncrona que realiza una operación de E/S (entrada/salida):
–
import asyncio
async def lee_archivo(nombre_archivo):
async with aiofiles.open(nombre_archivo, mode='r') as archivo:
contenido = await archivo.read()
return contenido
asyncio.run(lee_archivo('archivo.txt'))
En este ejemplo, utilizamos la biblioteca aiofiles
para leer el contenido de un archivo. La función async with
se utiliza para asegurarse de que el archivo és de su uso. Además, utilizamos la palabra clave «await» para esperar la finalización de la lectura del archivo antes de devolver su contenido.
Ejemplo de una función asíncrona que realiza múltiples tareas en paralelo:
–
import asyncio
async def tarea_1():
await asyncio.sleep(1)
return "Tarea 1 completada"
async def tarea_2():
await asyncio.sleep(2)
return "Tarea 2 completada"
async def tarea_3():
await asyncio.sleep(3)
return "Tarea 3 completada"
async def realiza_tareas():
tarea1 = asyncio.create_task(tarea_1())
tarea2 = asyncio.create_task(tarea_2())
tarea3 = asyncio.create_task(tarea_3())
resultados = await asyncio.gather(tarea1, tarea2, tarea3)
return resultados
asyncio.run(realiza_tareas())
En este ejemplo, creamos tres funciones asíncronas diferentes que realizan tareas que tardan diferentes cantidades de tiempo en completarse. Luego, utilizamos la función asyncio.create_task()
para crear tareas individuales para cada función asíncrona y luego utilizamos asyncio.gather()
para esperar la finalización de todas las tareas y devolver sus resultados.