anúncios

sexta-feira, 15 de agosto de 2025

Programação assíncrona no Python

No mundo real, um restaurante com apenas um cozinheiro pode atender vários clientes ao mesmo tempo: enquanto um prato assa no forno, o cozinheiro prepara outro. Isso é trabalho assíncrono.

No Python, a programação assíncrona nos permite executar múltiplas tarefas em paralelo (ou melhor, quase paralelo) sem precisar esperar que cada uma termine para começar a próxima — ideal para chamadas de API, consultas a banco de dados e processamento de arquivos.

O que é programação assíncrona?

Em um programa tradicional (síncrono), cada instrução só começa depois que a anterior termina.

Na programação assíncrona:

Algumas operações podem “esperar” (ex.: aguardar resposta de uma API).

Enquanto esperam, o Python pode executar outras tarefas.

Isso reduz tempo ocioso e aumenta a eficiência, principalmente em aplicações que fazem muitas operações de I/O.

O módulo asyncio

O asyncio é a biblioteca nativa do Python para lidar com programação assíncrona.

Com ele, você:

Declara funções assíncronas usando async def.

Aguarda resultados com await.

Executa múltiplas funções com asyncio.gather().

Criando um projeto prático

Neste exemplo, vamos simular o download de páginas web usando aiohttp para trabalhar de forma assíncrona.

Criar e ativar o ambiente virtual

python3 -m venv .venv

No Linux/macOS: source .venv/bin/activate

No Windows: .venv\Scripts\activate

Instalar dependências

pip install aiohttp

Código exemplo: Download assíncrono

Entendendo o código

async def : cria uma função assíncrona.

await : pausa a função até que o resultado esteja pronto, sem travar o resto do programa.

asyncio.gather() : executa várias tarefas ao mesmo tempo.

aiohttp : biblioteca otimizada para requisições HTTP assíncronas.

Comparando com o código síncrono

Se fizéssemos as requisições uma de cada vez, o tempo total seria a soma de todos os tempos individuais.

No modo assíncrono, todas começam juntas, reduzindo drasticamente o tempo de espera.

Quando usar programação assíncrona?

A programação assíncrona é especialmente útil quando seu código precisa:

  • Fazer várias requisições HTTP.
  • Ler ou gravar muitos arquivos.
  • Processar grandes volumes de dados que dependem de I/O.

Para cálculos pesados (CPU-bound), a programação assíncrona não é a melhor opção — nesse caso, usar múltiplos processos (multiprocessing) ou threads pode ser mais eficiente.

Considerações finais

Com o asyncio, conseguimos transformar tarefas demoradas em operações rápidas e eficientes, aproveitando melhor o tempo de execução do programa.

Feito!

Nenhum comentário:

Postar um comentário