Resolvido: mapa de multiprocessamento

Última atualização: 09/11/2023

Multiprocessamento é uma técnica popular na programação Python que permite executar vários processos simultaneamente, geralmente resultando em melhorias de desempenho e uso mais eficiente dos recursos do sistema. Este artigo se aprofunda no uso do multiprocessamento biblioteca em Python, focando especificamente no mapa, função. A função map permite aplicar uma função a cada item em um iterável, como uma lista, e retornar uma nova lista com os resultados. Ao aproveitar o multiprocessamento, podemos paralelizar esse processo para obter maior eficiência e escalabilidade.

Neste artigo, exploraremos o problema para o qual o multiprocessamento com função de mapa pode ser uma solução excelente, discutiremos as bibliotecas e funções relevantes, forneceremos uma explicação passo a passo do código e nos aprofundaremos em tópicos relacionados que se baseiam no backbone de multiprocessamento e a função de mapa.

Mapa de multiprocessamento: o problema e a solução

O problema que pretendemos resolver é melhorar o desempenho e a eficiência da aplicação de uma função a cada item de um grande iterável, como uma lista, tupla ou qualquer outro objeto que suporte iteração. Quando confrontado com tais tarefas, usar a função de mapa integrada ou a compreensão de lista pode ser bastante lento e ineficiente.

A solução é utilizar a biblioteca de multiprocessamento em Python, especificamente, o Piscina classe e seu mapa, método. Ao usar o função Pool.map() de multiprocessamento, podemos distribuir a execução de nossa função em vários processos.

Explicação passo a passo do código

Vamos detalhar o código e ilustrar como usar a função de mapa de multiprocessamento de maneira eficaz:

import multiprocessing
import time

def square(n):
    time.sleep(0.5)
    return n * n

# Create the list of numbers
numbers = list(range(10))

# Initialize the multiprocessing Pool
pool = multiprocessing.Pool()

# Use the map function with multiple processes
squared_numbers = pool.map(square, numbers)

print(squared_numbers)
  1. Primeiro, importe o multiprocessamento módulo, que contém as ferramentas necessárias para utilizar o processamento paralelo em Python.
  2. Crie uma função chamada quadrado que simplesmente dorme por meio segundo e depois retorna o quadrado do seu argumento de entrada. Esta função simula um cálculo que leva um tempo razoável para ser concluído.
  3. Gere uma lista chamada números, que contém números inteiros de 0 a 9 (inclusive).
  4. Inicialize um Piscina objeto do módulo de multiprocessamento. O objeto Pool serve como um meio de gerenciar os processos de trabalho que você usará para paralelizar suas tarefas.
  5. Ligue para o mapa, método no objeto pool e passe o quadrado função e o números lista. O método map então aplica a função square a cada item na lista de números simultaneamente, usando os processos de trabalho disponíveis no pool.
  6. Imprima a lista resultante de números_quadrados, que deve conter os valores quadrados da lista de números.

Biblioteca de multiprocessamento Python

O Python multiprocessamento biblioteca fornece um meio intuitivo de implementar paralelismo em seu programa. Ele mascara parte da complexidade normalmente associada à programação paralela, oferecendo abstrações de alto nível como Piscina. A classe Pool simplifica a distribuição do trabalho entre vários processos, permitindo ao usuário experimentar os benefícios do processamento paralelo com o mínimo de complicações.

Módulo Python Itertools e funções relacionadas

Embora o multiprocessamento seja uma excelente solução para muitas tarefas paralelas, vale a pena mencionar que o Python também fornece outras bibliotecas e ferramentas que atendem a necessidades semelhantes. O módulo itertools, por exemplo, oferece uma variedade de funções que operam em iteráveis, muitas vezes com maior eficiência. Algumas funções do itertools como imap() e imap_unordered() pode paralelizar o processo de aplicação de uma função a um iterável. No entanto, é importante observar que o itertools se concentra principalmente em soluções baseadas em iteradores, enquanto a biblioteca de multiprocessamento oferece uma abordagem mais abrangente ao paralelismo, fornecendo ferramentas e recursos adicionais além das funções semelhantes a mapas.

Artigos relacionados: