Introdução à programação assíncrona com Asyncio do Python

Aprenda a lidar com E/S assíncrona em Python

Este tutorial fornece uma visão geral da programação assíncrona em Python usando o módulo asyncio. Aprenda a escrever código assíncrono com async/await e veja exemplos práticos de E/S assíncrona.

Programação
Autor
Afiliação
Data de Publicação

5 de fevereiro de 2024

Data de Modificação

29 de abril de 2025

Palavras-chave

Tutorial de Python asyncio, Programação assíncrona em Python, Exemplo de Python assíncrono

Introdução

A programação assíncrona é uma abordagem poderosa para escrever código simultâneo que pode lidar com várias tarefas ao mesmo tempo. O módulo asyncio do Python fornece uma estrutura para escrever programas assíncronos usando as palavras-chave async e await, permitindo que você gerencie com eficiência código de rede estruturado de alto nível e vinculado a E/S.

Neste tutorial, você aprenderá: - Os conceitos básicos por trás da programação assíncrona. - Como usar o módulo asyncio do Python para escrever funções assíncronas. - Exemplos práticos de E/S assíncrona.



O que é programação assíncrona?

A programação assíncrona permite que um programa inicie uma tarefa e continue sem esperar que ela seja concluída. Essa abordagem sem bloqueio é ideal para lidar com operações como solicitações de rede, E/S de arquivos ou outras tarefas que podem levar tempo para serem concluídas. Usando asyncio, você pode melhorar a capacidade de resposta e a eficiência de suas aplicações.

Conceitos básicos do Asyncio

  • Funções assíncronas:
    Definido usando a sintaxe async def. Eles retornam uma corrotina, que é um tipo especial de iterador que pode ser aguardado.

  • Await:
    A palavra-chave await é usada para pausar a execução de uma função assíncrona até que uma corrotina seja concluída.

  • Loop de eventos:
    O loop de eventos é o núcleo de todas as aplicações asyncio. Ele agenda e gerencia tarefas assíncronas e retornos de chamada.

Um exemplo simples de Asyncio

Abaixo está um exemplo que demonstra uma função assíncrona básica em Python:

import asyncio

# Definir uma função assíncrona usando async def
async def greet(name):
    print(f"Hello, {name}!")
    # Simule um atraso assíncrono (por exemplo, E/S de rede)
    await asyncio.sleep(1)
    print(f"Goodbye, {name}!")

# Função principal para executar a função assíncrona
async def main():
    # Programe a corrotina greet para ser executada para dois nomes simultaneamente
    await asyncio.gather(
        greet("Alice"),
        greet("Bob")
    )

# Execute o loop de eventos
if __name__ == "__main__":
    asyncio.run(main())

Explicação:
- A função greet é definida como uma função assíncrona que imprime uma saudação, espera um segundo usando await asyncio.sleep(1) e, em seguida, imprime uma mensagem de despedida.
- A função main usa asyncio.gather para executar duas instâncias de greet simultaneamente.
- asyncio.run(main()) inicia o loop de eventos e executa a corrotina main.

Funcionalidades avançadas do Asyncio

Depois de se sentir confortável com o básico, você pode explorar recursos mais avançados do asyncio, como:

  • E/S assíncrona com fluxos:
    Lidando com conexões de rede usando soquetes assíncronos.
  • Agendamento de tarefas:
    Gerenciando e agendando várias tarefas assíncronas.
  • Integração com outras bibliotecas:
    Combinar asyncio com outras estruturas para desenvolvimento web ou processamento de dados.

Conclusão

A programação assíncrona com o módulo asyncio do Python pode melhorar muito o desempenho de aplicativos vinculados a E/S e melhorar a capacidade de resposta do seu código. Ao compreender os conceitos básicos e praticar com exemplos como o acima, você estará bem preparado para começar a escrever seus próprios programas assíncronos.

Leitura adicional

Boa programação e aproveite para explorar a programação assíncrona com o asyncio do Python!

Explore mais artigos

Nota

Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.

placeholder

placeholder
Nenhum item correspondente
De volta ao topo

Reuso

Citação

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Introdução à programação assíncrona com Asyncio do Python},
  date = {2024-02-05},
  url = {https://www.datanovia.com/pt/learn/programming/python/advanced/asyncio.html},
  langid = {pt}
}
Por favor, cite este trabalho como:
Kassambara, Alboukadel. 2024. “Introdução à programação assíncrona com Asyncio do Python.” February 5, 2024. https://www.datanovia.com/pt/learn/programming/python/advanced/asyncio.html.