Python Futuros simultâneos

Python Futuros simultâneos
“Semelhante à maneira como podemos construir e utilizar o pool de threads, um pool de processos pode ser formado e usado. Os conjuntos de processos são coleções de ociosidade, processos criados anteriormente que estão esperando para serem tarefas atribuídas. Sempre que precisamos executar várias ações, o uso de um pool de processos é melhor para construir procedimentos inovadores para cada atividade. O concorrente.Futures é um componente encontrado na biblioteca padrão do Python. Para dar aos programadores uma interface elevada para iniciar processos simultâneos, este pacote foi introduzido no Python 3.2.

A interface para executar tarefas utilizando um pool de threads ou processos é fornecida por essa camada de encapsulamento em cima dos componentes multitarefa e multitareada do Python. O concorrente.O Módulo Futures de Python criou uma classe abstrata “Executor” junto com suas subclasses de concreto que estão sendo usadas no lugar da classe “Executor”. É porque a classe "Executor" não pode ser utilizada diretamente no código.”

Exemplo 01

Vamos começar com a primeira ilustração do nosso artigo. Mostraremos a você o uso da subclasse do ProcesspoolExecutor de "Executor" nesta ilustração, eu.e., Receba um fluxo de tarefas para concluir os empregos, pois emprega multiprocessamento. Esse fluxo aloca trabalhos para fios existentes e planeja sua execução. Iniciamos este programa Python com o uso do “simultâneo.Módulo Futures ”Importando sua subclasse do ProcessPoolExecutor aqui no código.

Depois disso, estamos importando a classe do sono de um módulo de tempo em python através do uso de palavras -chave de e importar. Estamos definindo uma função com o nome "Thread", tomando uma variável de mensagem como um argumento. Esta função tem utilizando a função Call to Sleep () Função do Python para fazer a execução interromper apenas 2 segundos e retornar a mensagem à função principal ().

Embora a definição de função principal () tenha sido iniciada com a chamada para a função “ProcesspoolExecutor”.Módulo Futures para criar um pool de 5 processos e salvar o resultado do pool para um objeto "Executor". Este objeto "Executor" foi usado para chamar a função "Enviar" para criar 5 threads, passando uma mensagem "concluída" nos parâmetros. A execução da função tentou dormir por 2 segundos e retornar a mensagem. O resultado retornado seria salvo na variável "futuro". Temos chamado a função "feita" com a futura variável de objeto dentro da declaração "impressa" da função python para exibir o resultado retornado, i i.e., verdadeiro ou falso.

Depois disso, usamos a função de sono para fazer a execução do programa continuar após 5 segundos e depois verificar o resultado do pool do executor com o uso da função feita do futuro objeto. No final, o objeto "futuro" foi usado para chamar o resultado () função interna de python simultaneamente. Módulo futuro para ver o resultado real, eu.e., Concluído no final.

Nas últimas linhas, podemos ver que a função principal () foi chamada aqui. Vamos apenas salvar e executar nosso código para ver o resultado real para usar o concorrente.Pacotes futuros em programas Python. A imagem abaixo inclui o código para a explicação também mencionada.

Depois de executar este programa em Spyder 3, obtemos o resultado mostrado do solo na ferramenta Spyder3. Quando o pool de executores de 5 threads foi iniciado, ele chama a função do thread e dorme por 2 segundos e depois retorna a mensagem. Como o processo da piscina ainda não se completa, o “futuro.feito ”retorna falsa e exibimos o resultado“ falso ”. A execução deste programa dorme pelos próximos 5 segundos e depois exibe o resultado de “futuro.feito ”novamente.

Como um total de 5 segundos são passados ​​e a piscina foi executada com sucesso, ele retorna verdadeiro neste caso. Por fim, o “futuro.Função ”, a função exibiu a mensagem“ concluída ”para o pool de 5 processos de execução completa dos processos. Este é o resultado esperado do código acima afixado.

Exemplo 02

Vamos dar uma olhada em outro exemplo para usar a subclasse do ProcesspoolExecutor.Módulo Futures em Python. Então, importamos a subclasse ProcessPoolExecutor aqui. Depois disso, inicializamos uma lista "NUM" de 4 valores numéricos diferentes, i.e., 14, 7, 3, 15. Temos usado um total de 2 funções neste programa. A execução da função principal () começou com o uso do ProcessPoolExecutor Context Manager.

O Gerenciador de Contexto pode ser usado como um segundo método de criação de casos de processos do processo. Funciona de maneira semelhante à abordagem mostrada no exemplo anterior. O melhor recurso do gerenciador de contexto é como é sintaticamente atraente. Então, nós o usamos aqui para criar um pool de 3, eu.e., Total de trabalhadores. Com isso, o executor está usando a função map () para passar por um número de cada elemento de uma lista "num" como um parâmetro para a função "cubo" para mapear. A função Cube retornará o cubo de cada número passado da lista para o uso de fórmulas "n*n*n" e salvar o resultado retornado para variável "r".

O loop "for" está aqui para usar o resultado "r" para cada elemento exibir cada valor retornado da função Cubo no console através do uso da função "impressão" com a variável "val". As duas últimas linhas mostram o uso da chamada de função principal (). A imagem abaixo inclui o código para a explicação também mencionada.

A saída está mostrando o cubo de todos os 4 elementos da lista "num". Este é o resultado esperado do código acima afixado.

Conclusão

Este artigo é tudo sobre o uso do “simultâneo.Futures ”Module of Python nos programas para ver seus usos. Em nosso primeiro exemplo, nós o utilizamos para criar um pool de 5 processos e retornar o resultado antes e depois do uso da função do sono no código. Depois disso, utilizamos outro exemplo para consumir o “simultâneo.Módulo Futures ”e exibem alguns cálculos matemáticos em nossa ferramenta Sypder Tool Python's Console.