Middle
Qual é a função de gather() em Python e em que casos deve ser usada?
sobes.tech IA
Resposta da IA
asyncio.gather() combina vários objetos assíncronos (awaitable) numa única Future.
Deve usar-se a função gather():
- Quando se pretende executar várias corrotinas ou outras tarefas assíncronas em paralelo e aguardar que todas terminem.
- Para agrupar os resultados de operações assíncronas.
- Para lidar com exceções que ocorram em qualquer uma das tarefas agrupadas.
Exemplo de uso:
import asyncio
async def tarefa_um(desper):
# Simulação de uma operação longa
await asyncio.sleep(desper)
return f"Tarefa um terminou após {desper} segundos"
async def tarefa_dois(dados):
# Simulação de processamento de dados
await asyncio.sleep(1)
return f"Tarefa dois processou: {dados}"
async def main():
resultados = await asyncio.gather(
tarefa_um(2),
tarefa_dois("alguns_dados"),
return_exceptions=True # Retorna exceções em vez de as lançar
)
print(resultados)
# Executar a corrotina principal
# asyncio.run(main())