Processamento paralelo em Python: acelere seu código

Aproveitando o multiprocessamento para computação eficiente

Aprenda como aumentar o desempenho do seu programa Python usando técnicas de processamento paralelo. Este tutorial aborda os conceitos básicos do módulo multiprocessing, juntamente com exemplos práticos para ajudá-lo a executar tarefas simultaneamente.

Programação
Autor
Afiliação
Data de Publicação

5 de fevereiro de 2024

Data de Modificação

9 de maio de 2025

Palavras-chave

Processamento paralelo em Python, multiprocessamento em Python, Programação simultânea, Desempenho do Python

Introdução

Em aplicações modernas, o desempenho é fundamental. Quando confrontado com tarefas computacionalmente intensivas, executar o código sequencialmente pode ser um gargalo. O módulo multiprocessing do Python oferece uma maneira de contornar essa limitação, permitindo que você execute tarefas simultaneamente em vários núcleos da CPU. Este tutorial apresentará os fundamentos do processamento paralelo em Python e mostrará como aproveitar o poder do multiprocessamento para acelerar seu código.



O que é processamento paralelo?

O processamento paralelo envolve dividir uma tarefa em subtarefas que podem ser executadas simultaneamente. Essa abordagem pode reduzir drasticamente o tempo necessário para processamento de dados, cálculos e outras tarefas. No Python, o módulo multiprocessing permite criar e gerenciar processos separados, cada um rodando simultaneamente com os outros.

Introdução ao módulo Multiprocessing

Exemplo básico: usando um pool de processos

A classe multiprocessing.Pool simplifica a execução de uma função em vários valores de entrada, distribuindo os dados de entrada entre os processos. Abaixo está um exemplo que demonstra como calcular os quadrados dos números simultaneamente.

import multiprocessing

# Defina uma função para calcular o quadrado de um número
def square(n):
    return n * n

if __name__ == "__main__":
    numbers = [1, 2, 3, 4, 5]
    # Crie um pool de processos de trabalho
    with multiprocessing.Pool(processes=3) as pool:
        # Mapeie a função quadrado para a lista de números
        results = pool.map(square, numbers)
    print("Squares:", results)

Explicação

  • Pool: O objeto Pool cria um pool de processos de trabalho. Neste exemplo, especificamos processes=3, o que significa que até três processos serão executados simultaneamente.
  • map(): A função pool.map() aplica a função square a cada elemento da lista simultaneamente, retornando uma lista de resultados.
  • Protegendo o bloco principal: O bloco if __name__ == '__main__': é essencial ao usar multiprocessamento em Python para evitar a geração recursiva de processos no Windows.

Uso avançado

O módulo multiprocessing oferece recursos adicionais, como:

  • Paralelismo baseado em processos: Criando processos individuais usando multiprocessing.Process.
  • Comunicação entre processos: Usando filas e pipes para compartilhar dados entre processos.
  • Primitivas de sincronização: Ferramentas como bloqueios, semáforos e eventos para gerenciar o acesso simultâneo a recursos compartilhados.

Explore esses tópicos avançados à medida que você se familiariza com os conceitos básicos do multiprocessamento.

Práticas recomendadas

  • Use o Main Guard: Sempre inclua if __name__ == '__main__': ao usar multiprocessamento para garantir o tratamento adequado dos processos.
  • Gerencie os recursos com cuidado: Use gerenciadores de contexto (por exemplo, with multiprocessing.Pool() as pool:) para garantir que os processos sejam fechados corretamente.
  • Perfil do seu código: Use ferramentas de perfilagem para determinar se o processamento paralelo é benéfico para sua tarefa específica.
  • Considere a sobrecarga: Lembre-se de que a criação de processos gera sobrecarga, portanto, o processamento paralelo é mais benéfico para tarefas vinculadas à CPU.

Conclusão

O processamento paralelo com o módulo multiprocessing do Python pode acelerar significativamente seus programas, executando tarefas simultaneamente. Ao compreender e aplicar as técnicas abordadas neste tutorial, você pode otimizar o desempenho do seu código e lidar com tarefas computacionalmente intensivas de forma mais eficiente.

Leitura adicional

Boa programação e aproveite para acelerar suas aplicações Python com processamento paralelo!

Explore mais artigos

Nota

Aqui estão mais artigos da mesma categoria para ajudá-lo a se aprofundar no tópico.

placeholder

placeholder
Nenhum item correspondente
De volta ao topo

Reuso

Citação

BibTeX
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Processamento paralelo em Python: acelere seu código},
  date = {2024-02-05},
  url = {https://www.datanovia.com/pt/learn/programming/python/advanced/parallel-processing/fundamentals.html},
  langid = {pt}
}
Por favor, cite este trabalho como:
Kassambara, Alboukadel. 2024. “Processamento paralelo em Python: acelere seu código.” February 5, 2024. https://www.datanovia.com/pt/learn/programming/python/advanced/parallel-processing/fundamentals.html.