`asyncio` es una biblioteca de Python que se usa para programación asincrónica, introducida en Python 3.4, que permite la ejecución de código de manera concurrente utilizando corutinas, multiplexación de E/S, y entre otras cosas.
Aquí hay un ejemplo básico de cómo usar asyncio para manejar tareas asíncronas:
```python
import asyncio
- Definimos una coroutine.
- Nota: Una coroutine se parece a una función normal pero se comporta como un generador.
async def say_hey(delay, what):
await asyncio.sleep(delay)
print(what)
- Creamos una lista de tareas a ejecutar
tasks = [
asyncio.ensure_future(say_hey(1, ‘Hola’)), #se ejecuta después de 1 segundo
asyncio.ensure_future(say_hey(2, ‘Mundo’)) #se ejecuta después de 2 segundos
]
- Iniciamos el bucle de eventos
loop = asyncio.get_event_loop()
- Ejecutamos las tareas y las detenemos cuando todas hayan terminado
loop.run_until_complete(asyncio.gather(*tasks))
- Cerramos el bucle
loop.close()
```
En este código, se define una función asíncrona llamada `say_hey` que espera un tiempo específico, luego imprime un mensaje. Entonces, creamos un par de tareas basadas en eso, y las ejecutamos en el bucle de eventos de asyncio. El bucle de eventos es el núcleo de todas las operaciones asyncio.
A partir de Python 3.7, la forma recomendada de ejecutar tareas asyncio se simplificó con `asyncio.run()`:
```python
import asyncio
async def say_hey(delay, what):
await asyncio.sleep(delay)
print(what)
async def main():
task1 = say_hey(1, ‘Hola’)
task2 = say_hey(2, ‘Mundo’)
await asyncio.gather(task1, task2)
asyncio.run(main())
```
`asyncio.run()` crea un bucle de eventos, ejecuta la coroutine pasada y cierra el bucle. La función `asyncio.gather()` se utiliza para programar varias corutinas para que se ejecuten de manera concurrente.