"asyncio" --- E/S Asíncrona
***************************

======================================================================


¡Hola Mundo!
^^^^^^^^^^^^

   import asyncio

   async def main():
       print('Hello ...')
       await asyncio.sleep(1)
       print('... World!')

   asyncio.run(main())

asyncio es una biblioteca para escribir código **concurrente**
utilizando la sintaxis **async/await**.

asyncio es utilizado como base en múltiples *frameworks* asíncronos de
Python y provee un alto rendimiento en redes y servidores web,
bibliotecas de conexión de base de datos, colas de tareas
distribuidas, etc.

asyncio suele encajar perfectamente para operaciones con límite de E/S
y código de red **estructurado** de alto nivel.

asyncio provee un conjunto de *APIs* de **alto nivel** para:

* ejecutar corutinas de Python de manera concurrente y tener control
  total sobre su ejecución;

* realizar redes E/S y comunicación entre procesos(IPC);

* controlar subprocesos;

* distribuir tareas a través de colas;

* sincronizar código concurrente;

Adicionalmente, existen *APIs* de **bajo nivel** para *desarrolladores
de bibliotecas y frameworks* para:

* crear y administrar  bucles de eventos, los cuales proveen *APIs*
  asíncronas para "redes", ejecutando "subprocesos", gestionando
  "señales del sistema operativo", etc;

* implementar protocolos eficientes utilizando transportes;

* Bibliotecas puente basadas en retrollamadas y código con sintaxis
  *async/wait*.

-[ asyncio REPL ]-

You can experiment with an "asyncio" concurrent context in the REPL:

   $ python -m asyncio
   asyncio REPL ...
   Use "await" directly instead of "asyncio.run()".
   Type "help", "copyright", "credits" or "license" for more information.
   >>> import asyncio
   >>> await asyncio.sleep(10, result='hello')
   'hello'

Raises an auditing event "cpython.run_stdin" with no arguments.

Distinto en la versión 3.9.20: (also 3.8.20) Emits audit events.

-[ Referencias ]-

*APIs* de alto nivel

* Corrutinas y Tareas

* Streams

* Primitivas de sincronización

* Sub-procesos

* Colas

* Excepciones

*APIs* de bajo nivel

* Bucle de eventos

* Futures

* Transportes y protocolos

* Políticas

* Soporte de plataforma

Guías y tutoriales

* Índice de API de alto nivel

* Índice de API de bajo nivel

* Desarrollando con asyncio

Nota:

  El código fuente para asyncio puede encontrarse en Lib/asyncio/.
