Sobes.tech
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())