Processamento Assíncrono em Python
Este artigo explica o processamento assíncrono em Python.
Você pode aprender exemplos de código para o uso básico do async/await e do módulo asyncio do Python.
YouTube Video
Processamento Assíncrono em Python
O processamento assíncrono em Python é um mecanismo para lidar de forma eficiente com operações de E/S demoradas, como leitura e escrita de arquivos ou comunicação em rede. No processamento síncrono, a próxima operação espera até que a atual termine, mas com o processamento assíncrono, você pode continuar com outras tarefas durante o tempo de espera. Em Python, o módulo asyncio é fornecido para realizar o processamento assíncrono. Aqui, explicaremos seus elementos básicos e como usá-los passo a passo.
Sintaxe Básica
No núcleo do processamento assíncrono estão funções chamadas corrotinas. As funções async definem funções assíncronas, e await é usado para aguardar uma tarefa assíncrona dentro dessas funções.
1import asyncio
2
3async def say_hello():
4 print("Hello")
5 await asyncio.sleep(1)
6 print("World")
7
8if __name__ == "__main__":
9 # Execute asynchronous task
10 asyncio.run(say_hello())- No código acima, a função
say_helloé definida como uma tarefa assíncrona. Ao esperar 1 segundo comsleep(), outras tarefas assíncronas podem ser executadas.
Executando Múltiplas Tarefas
Usando a função gather do módulo asyncio, você pode executar várias tarefas simultaneamente.
1import asyncio
2
3async def task1():
4 print("Task 1 started")
5 await asyncio.sleep(2)
6 print("Task 1 completed")
7
8async def task2():
9 print("Task 2 started")
10 await asyncio.sleep(1)
11 print("Task 2 completed")
12
13async def main():
14 await asyncio.gather(task1(), task2())
15
16if __name__ == "__main__":
17 asyncio.run(main())- Neste exemplo,
task1etask2são executadas simultaneamente. Como resultado,task2é concluído primeiro entre as duas tarefas, mas o tempo total de execução é igual ao tempo de execução da tarefa mais longa.
Manipulação de Erros
O tratamento de erros é importante mesmo no processamento assíncrono. Você pode capturar e tratar erros usando a sintaxe padrão try-except.
1import asyncio
2
3async def faulty_task():
4 raise Exception("An error occurred")
5
6async def main():
7 try:
8 await faulty_task()
9 except Exception as e:
10 print(f"Caught an error: {e}")
11
12if __name__ == "__main__":
13 asyncio.run(main())- Este código demonstra como exceções que ocorrem dentro de funções assíncronas podem ser capturadas com
try-excepte suas mensagens de erro tratadas de forma segura. A exceção defaulty_taské capturada dentro demaine é exibida adequadamente.
Resumo
O processamento assíncrono em Python usa async / await e asyncio para executar outras tarefas concorrentemente enquanto aguarda operações de E/S, permitindo um processamento mais eficiente. Aproveitando a execução concorrente de múltiplas tarefas e E/S assíncrona, é possível melhorar significativamente o desempenho. Além disso, como você pode lidar com erros assim como com o try-except comum, é possível executar códigos assíncronos com segurança.
Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.