Middle
O que é programação assíncrona (async)?
sobes.tech IA
Resposta da IA
A programação assíncrona é um paradigma que permite executar múltiplas tarefas simultaneamente, sem bloquear o fluxo principal de execução do programa. Isto é alcançado através do uso eficiente do tempo de espera (por exemplo, em operações de entrada/saída).
Conceitos principais:
- Coroutines: Funções especiais que podem pausar a sua execução e retomá-la mais tarde. Declaradas com
async def. - Loop de eventos: O orquestrador principal que gere a execução das coroutines, monitora os eventos e alterna entre tarefas quando uma delas espera.
- await: Palavra-chave para pausar a execução de uma coroutine até que a operação esperada seja concluída (por exemplo, chamar outra coroutine ou aguardar um resultado de I/O).
Exemplo:
// Exemplo de função assíncrona
import asyncio
async def fetch_url(url):
print(f"A iniciar carregamento: {url}")
await asyncio.sleep(2) // Simulação de uma operação longa (por exemplo, pedido de rede)
print(f"Carregamento concluído: {url}")
async def main():
# Criar tarefas a partir de coroutines
task1 = asyncio.create_task(fetch_url("http://example.com/page1"))
task2 = asyncio.create_task(fetch_url("http://example.com/page2"))
# Esperar que ambas as tarefas terminem
await task1
await task2
// Executar o ciclo de eventos
if __name__ == "__main__":
asyncio.run(main())
Vantagens:
- Aumento de desempenho: Especialmente para tarefas vinculadas a I/O (requisições de rede, trabalho com ficheiros).
- Melhor utilização de recursos: Não cria múltiplas threads ou processos, o que reduz os custos adicionais.
- Manutenção da capacidade de resposta: O fluxo principal não fica bloqueado, o que é importante para aplicações interativas ou servidores.
A programação assíncrona é adequada para:
- Servidores web (por exemplo, usando
asyncioouFastAPI). - Parsing de websites.
- Trabalhar com bases de dados.
- Qualquer tarefa relacionada com a espera de recursos externos.