# `asyncio` — E/S assíncrona

asyncio é uma biblioteca para escrever código simultâneo usando a sintaxe async/await.

O asyncio é usado como uma base para várias estruturas assíncronas do Python que fornecem rede e servidores web de alto desempenho, bibliotecas de conexão de banco de dados, filas de tarefas distribuídas etc.

asyncio geralmente serve perfeitamente para código de rede estruturado de alto nível e vinculado a E/S.

asyncio fornece um conjunto de APIs de alto nível para:

- executar corrotinas do Python simultaneamente e ter controle total sobre sua execução;

- realizar IPC e E/S de rede;

- controlar subprocessos;

- distribuir tarefas por meio de filas;

- sincronizar código simultâneo;

Além disso, há APIs de baixo nível para desenvolvedores de biblioteca e framework para:

- criar e gerenciar laços de eventos, que fornecem APIs assíncronas para `rede`, execução de `subprocessos`, tratamento de `sinais de sistemas operacionais` etc;

- implementar protocolos eficientes usando transportes;

- fazer uma ponte sobre bibliotecas baseadas em chamadas e codificar com a sintaxe de async/await.

REPL de asyncio

Você pode experimentar um contexto concorrente `asyncio` no 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'

Levanta um evento de auditoria `cpython.run_stdin` sem argumentos.

Alterado na versão 3.10.15: (also 3.9.20, and 3.8.20) Emits audit events.

Referência

APIs de alto nível

- Corrotinas e tarefas
- Streams
- Synchronization Primitives
- Subprocessos
- Filas
- Exceções

APIs de baixo nível

- Laço de eventos
- Futuros
- Transports e Protocols
- Políticas
- Suporte a plataformas

Guias e tutoriais

- Índice da API de alto nível
- Índice de APIs de baixo nível
- Desenvolvendo com asyncio

Nota

O código-fonte para o asyncio pode ser encontrado em Lib/asyncio/.