Procesamiento asíncrono en Python
Este artículo explica el procesamiento asíncrono en Python.
Puedes aprender ejemplos de código para el uso básico de async/await y el módulo asyncio de Python.
YouTube Video
Procesamiento asíncrono en Python
El procesamiento asíncrono en Python es un mecanismo para gestionar eficientemente operaciones de entrada y salida que consumen mucho tiempo, como leer y escribir archivos o la comunicación por red. En el procesamiento síncrono, la siguiente operación espera hasta que termine la actual, pero con el procesamiento asíncrono puedes continuar con otras tareas durante el tiempo de espera. En Python, se proporciona el módulo asyncio para realizar procesamiento asíncrono. Aquí explicaremos sus elementos básicos y cómo utilizarlos paso a paso.
Sintaxis Básica
En el núcleo del procesamiento asíncrono se encuentran funciones llamadas corutinas. Las funciones async definen funciones asíncronas, y await se utiliza para esperar una tarea asíncrona dentro de esas funciones.
1import asyncio
2
3async def say_hello():
4 print("Hello")
5 await asyncio.sleep(1)
6 print("World")
7
8if __name__ == "__main__":
9 # Execute asynchronous task
10 asyncio.run(say_hello())- En el código anterior, la función
say_hellose define como una tarea asíncrona. Mientras se espera 1 segundo consleep(), otras tareas asíncronas pueden ejecutarse.
Ejecución de múltiples tareas
Al utilizar la función gather del módulo asyncio, puedes ejecutar varias tareas simultáneamente.
1import asyncio
2
3async def task1():
4 print("Task 1 started")
5 await asyncio.sleep(2)
6 print("Task 1 completed")
7
8async def task2():
9 print("Task 2 started")
10 await asyncio.sleep(1)
11 print("Task 2 completed")
12
13async def main():
14 await asyncio.gather(task1(), task2())
15
16if __name__ == "__main__":
17 asyncio.run(main())- En este ejemplo,
task1ytask2se ejecutan concurrentemente. Como resultado,task2se completa primero de las dos tareas, pero el tiempo total de ejecución equivale al tiempo de ejecución de la tarea más larga.
Manejo de Errores
El manejo de errores es importante incluso en el procesamiento asíncrono. Puedes capturar y manejar errores utilizando la sintaxis estándar de try-except.
1import asyncio
2
3async def faulty_task():
4 raise Exception("An error occurred")
5
6async def main():
7 try:
8 await faulty_task()
9 except Exception as e:
10 print(f"Caught an error: {e}")
11
12if __name__ == "__main__":
13 asyncio.run(main())- Este código demuestra cómo las excepciones que ocurren dentro de funciones asíncronas pueden ser capturadas con
try-excepty cómo manejar sus mensajes de error de forma segura. La excepción defaulty_taskse captura dentro demainy se muestra adecuadamente.
Resumen
El procesamiento asíncrono en Python utiliza async / await y asyncio para ejecutar otras tareas de forma concurrente mientras se espera por la entrada o salida, permitiendo un procesamiento eficiente. Al aprovechar la ejecución concurrente de múltiples tareas y la E/S asíncrona, puedes mejorar significativamente el rendimiento. Además, como puedes manejar los errores igual que con try-except común, puedes ejecutar código asíncrono de forma segura.
Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.