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)
- Primeiro, importe o multiprocessamento módulo, que contém as ferramentas necessárias para utilizar o processamento paralelo em Python.
- 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.
- Gere uma lista chamada números, que contém números inteiros de 0 a 9 (inclusive).
- 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.
- 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.
- 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.