Python Multiprocessamento For-Loop

Python Multiprocessamento For Loop



O multiprocessamento é comparável ao multithreading. No entanto, diferencia-se porque só podemos executar um thread por momento devido ao GIL que é empregado para o threading. Multiprocessamento é o processo de executar operações sequencialmente em vários núcleos de CPU. As linhas de execução não podem ser operadas em paralelo. No entanto, o multiprocessamento nos permite estabelecer os processos e executá-los simultaneamente em vários núcleos de CPU. O loop, como o loop for, é uma das linguagens de script mais usadas. Repita o mesmo trabalho usando vários dados até que um critério, como um número predeterminado de iterações, seja alcançado. O loop realiza cada iteração uma a uma.

Exemplo 1:  Utilizando o For-Loop no Python Multiprocessing Module

Neste exemplo, usamos o loop for e o processo de classe do módulo de multiprocessamento Python. Começamos com um exemplo bem direto para que você possa entender rapidamente como funciona o loop for de multiprocessamento do Python. Utilizando uma interface comparável ao módulo de threading, o multiprocessamento embala a criação de processos.







Ao empregar os subprocessos em vez de threads, o pacote de multiprocessamento fornece concorrência local e distante, evitando assim o Global Interpreter Lock. Use um loop for, que pode ser um objeto de string ou uma tupla, para iterar continuamente em uma sequência. Isso funciona menos como a palavra-chave vista em outras linguagens de programação e mais como um método iterador encontrado em outras linguagens de programação. Ao iniciar um novo multiprocessamento, você pode executar um loop for que executa um procedimento concorrentemente.



Vamos começar implementando o código para execução de código utilizando a ferramenta “spyder”. Acreditamos que o “spyder” também é o melhor para executar o Python. Importamos um processo do módulo de multiprocessamento que o código está executando. O conceito de multiprocessamento em Python denominado “classe de processo” cria um novo processo Python, fornece a ele um método para executar o código e fornece ao aplicativo pai uma maneira de gerenciar a execução. A classe Process contém os procedimentos start() e join(), ambos cruciais.



Em seguida, definimos uma função definida pelo usuário chamada “func”. Como é uma função definida pelo usuário, damos a ela um nome de nossa escolha. Dentro do corpo desta função, passamos a variável “subject” como argumento e o valor “maths”. Em seguida, chamamos a função “print()”, passando a instrução “O nome do assunto comum é” bem como seu argumento “assunto” que contém o valor. Então, na etapa seguinte, utilizamos o “if name== _main_”, que impede que você execute o código quando o arquivo é importado como um módulo e só permite que você o faça quando o conteúdo é executado como um script.





A seção de condição com a qual você começa pode ser considerada na maioria das circunstâncias como um local para fornecer o conteúdo que só deve ser executado quando seu arquivo for executado como um script. Então, usamos o argumento subject e armazenamos alguns valores nele que são “science”, “English” e “computer”. O processo recebe o nome “process1[]” na etapa seguinte. Então, usamos o “process(target=func)” para chamar a função no processo. Target é usado para chamar a função, e salvamos esse processo na variável “P”.

Em seguida, usamos o “process1” para chamar a função “append()” que adiciona um item ao final da lista que temos na função “func”. Como o processo é armazenado na variável “P”, passamos “P” para esta função como seu argumento. Por fim, usamos a função “start()” com “P” para iniciar o processo. Depois disso, executamos o método novamente enquanto fornecemos o argumento “assunto” e usamos “for” no assunto. Então, usando “process1” e o método “add()” mais uma vez, iniciamos o processo. O processo então é executado e a saída é retornada. O procedimento é então instruído a terminar usando a técnica “join ()”. Os processos que não chamarem o procedimento “join()” não serão encerrados. Um ponto crucial é que o parâmetro de palavra-chave “args” deve ser usado se você quiser fornecer argumentos durante o processo.




Agora, você pode ver na saída que a instrução é exibida primeiro passando o valor para o assunto “maths” que passamos para a função “func” porque primeiro a chamamos usando a função “process”. Então, usamos o comando “append()” para ter valores que já estavam na lista que é adicionada no final. Em seguida, foram apresentados “ciência”, “computador” e “inglês”. Mas, como você pode ver, os valores não estão na sequência correta. Isso ocorre porque eles o fazem tão rapidamente quanto o procedimento é concluído e relatam sua mensagem.

Exemplo 2: Conversão de For-Loop Sequencial em For-Loop Paralelo de Multiprocessamento

Neste exemplo, a tarefa de loop de multiprocessamento é executada sequencialmente antes de ser convertida em uma tarefa de loop for paralela. Você pode percorrer sequências como uma coleção ou string na ordem em que ocorrem usando os loops for.

Agora, vamos começar a implementar o código. Primeiro, importamos “sleep” do módulo time. Usando o procedimento “sleep()” no módulo time, você pode suspender a execução do thread de chamada pelo tempo que desejar. Então, usamos “random” do módulo random, definimos uma função com o nome “func” e passamos a palavra-chave “argu”. Em seguida, criamos um valor aleatório usando “val” e o definimos como “random”. Então, bloqueamos por um pequeno período usando o método “sleep()” e passamos “val” como parâmetro. Então, para transmitir uma mensagem, executamos o método “print()”, passando como parâmetro as palavras “ready” e a palavra-chave “arg”, além de “created” e passamos o valor usando “val”.

Por fim, utilizamos “flush” e definimos como “True”. O usuário pode decidir se deseja ou não armazenar em buffer a saída usando a opção flush na função de impressão do Python. O valor padrão deste parâmetro de Falso indica que a saída não será armazenada em buffer. A saída é exibida como uma série de linhas uma após a outra se você definir como true. Em seguida, usamos o “if name== main” para proteger os pontos de entrada. Em seguida, executamos o trabalho sequencialmente. Aqui, definimos o intervalo como “10”, o que significa que o loop termina após 10 iterações. Em seguida, chamamos a função “print()”, passamos a ela a instrução de entrada “ready” e usamos a opção “flush=True”.


Agora você pode ver que quando executamos o código, o loop faz com que a função seja executada “10” vezes. Ele itera 10 vezes, começando no índice zero e terminando no índice nove. Cada mensagem contém um número de tarefa que é um número de função que passamos como um “arg” e um número de criação.


Esse loop sequencial agora está sendo transformado em um loop for paralelo de multiprocessamento. Usamos o mesmo código, mas vamos para algumas bibliotecas e funções extras para multiprocessamento. Portanto, devemos importar o processo do multiprocessamento, assim como explicamos anteriormente. Em seguida, criamos uma função chamada “func” e passamos a palavra-chave “arg” antes de usar “val=random” para obter um número aleatório.

Então, depois de invocar o método “print()” para mostrar uma mensagem e dar o parâmetro “val” para atrasar um pouco, utilizamos a função “if name= main” para proteger os pontos de entrada. Em seguida, criamos um processo e chamamos a função no processo usando “process” e passamos o “target=func”. Então, passamos a “func”, “arg”, passamos o valor “m”, e passamos o intervalo “10” que significa que o loop termina a função após “10” iterações. Em seguida, iniciamos o processo usando o método “start ()” com “process”. Em seguida, chamamos o método “join()” para aguardar a execução do processo e concluir todo o processo em seguida.


Portanto, quando executamos o código, as funções chamam o processo principal e iniciam sua execução. Eles são feitos, no entanto, até que todas as tarefas sejam concluídas. Podemos ver isso porque cada tarefa é realizada simultaneamente. Ele relata sua mensagem assim que termina. Isso significa que, embora as mensagens estejam fora de ordem, o loop termina após todas as “10” iterações serem concluídas.

Conclusão

Cobrimos o loop for de multiprocessamento do Python neste artigo. Também apresentamos duas ilustrações. A primeira ilustração mostra como utilizar um loop for na biblioteca de multiprocessamento de loop do Python. E a segunda ilustração mostra como transformar um loop for sequencial em um loop for de multiprocessamento paralelo. Antes de construir o script para multiprocessamento Python, devemos importar o módulo de multiprocessamento.