Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Trabalhando com Processos | Multithreading vs. Multiprocessing
Programação Estrutural em Python

Trabalhando com Processos

Deslize para mostrar o menu

O módulo multiprocessing do Python permite alcançar paralelismo real ao criar processos separados, cada um com seu próprio interpretador Python e espaço de memória. Diferente das threads, que compartilham memória e executam no mesmo processo, os processos são completamente isolados uns dos outros. Esse isolamento evita a limitação do Global Interpreter Lock (GIL), permitindo que múltiplos núcleos de CPU trabalhem em paralelo em tarefas que exigem uso intensivo de CPU. Após assistir ao vídeo acima, deve ficar claro que o paralelismo baseado em processos é especialmente útil quando é necessário realizar cálculos pesados ou aproveitar múltiplos núcleos para tarefas que, de outra forma, seriam limitadas pelo GIL. O módulo multiprocessing oferece uma API familiar, semelhante ao módulo threading, facilitando a alternância entre threading e processing conforme a necessidade.

Utilização dessas classes e funções para construir aplicações paralelas robustas, gerenciar compartilhamento de dados e coordenar a execução de processos em Python.

123456789101112131415
import multiprocessing import time def print_message(message, delay): time.sleep(delay) print(message) process1 = multiprocessing.Process(target=print_message, args=("Process 1 finished", 2)) process2 = multiprocessing.Process(target=print_message, args=("Process 2 finished", 1)) process1.start() process2.start() process1.join() process2.join()

Este exemplo de código demonstra como usar o módulo multiprocessing do Python para executar tarefas em paralelo criando processos separados. O exemplo utiliza atrasos simples de tempo e imprime mensagens para mostrar como os processos podem ser executados de forma independente e simultânea.

Conceitos-chave ilustrados

  • Criação de Processos:

    • Novos processos são criados usando a classe multiprocessing.Process;
    • Cada processo recebe uma função alvo (print_message) e argumentos para passar para essa função.
  • Inicialização de Processos:

    • O método start() inicia cada processo, permitindo que eles sejam executados concorrentemente;
    • Uma vez iniciados, cada processo executa sua função alvo independentemente dos outros.
  • Execução Paralela:

    • Ambos os processos dormem por durações diferentes (2 e 1 segundos) usando time.sleep();
    • Como são executados em paralelo, o processo com menor atraso termina primeiro, mesmo tendo sido iniciado depois do outro.
  • Junção de Processos:

    • O método join() garante que o programa principal aguarde ambos os processos terminarem antes de prosseguir;
    • Sem o join(), o programa principal poderia encerrar antes dos processos concluírem.

Este exemplo mostra que, com multiprocessing, tarefas podem ser executadas ao mesmo tempo em múltiplos núcleos de CPU, tornando-o ideal para operações que exigem processamento intenso e se beneficiam da execução paralela.

question mark

Qual afirmação melhor descreve a diferença entre threads e processos em Python?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 3. Capítulo 4
some-alt