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:
-
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. -
Módulo
multiprocessing— para criar processos. Permite contornar o GIL e usar eficientemente vários núcleos de CPU. -
Módulo
asyncio— para programação assíncrona usando corrotinas. Bom para muitas operações de entrada/saída. -
Bibliotecas de alto nível:
concurrent.futures.ThreadPoolExecutoreProcessPoolExecutor— 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.