Sobes.tech
Junior — Middle

Quais métodos estão implementados em Python para realizar tarefas em paralelo ou de forma concorrente?

sobes.tech IA

Resposta da IA

No Python, existem várias abordagens e bibliotecas usadas para executar tarefas de forma paralela ou concorrente:

  1. Módulo threading — para criar threads. Adequado para tarefas com muitas operações de entrada/saída, mas não acelera tarefas CPU-bound devido ao GIL.

  2. Módulo multiprocessing — para criar processos. Permite contornar o GIL e usar eficientemente vários núcleos de CPU.

  3. Módulo asyncio — para programação assíncrona usando corrotinas. Bom para muitas operações de entrada/saída.

  4. Bibliotecas de alto nível:

    • concurrent.futures.ThreadPoolExecutor e ProcessPoolExecutor — interface conveniente para executar tarefas em threads ou processos.

Exemplo de uso de concurrent.futures:

from concurrent.futures import ThreadPoolExecutor

def tarefa(n):
    print(f"Tarefa {n} em execução")

with ThreadPoolExecutor(max_workers=3) as executor:
    for i in range(5):
        executor.submit(tarefa, i)

Assim, a escolha do método depende do tipo de tarefa: para tarefas CPU-bound — multiprocessing, para I/O-bound — threading ou asyncio.