Objeto compartido de multiprocesamiento de Python

Zeeshan Afridi 21 junio 2023
  1. Usar objetos de memoria compartida de Python en multiprocesamiento
  2. Conclusión
Objeto compartido de multiprocesamiento de Python

En Python, el multiprocesamiento de memoria compartida se compone de la conexión de múltiples procesadores, pero estos procesadores deben tener acceso directo a la memoria principal del sistema. Esto permitirá que todos los procesadores conectados accedan a los otros datos del procesador que han usado o creado.

Usar objetos de memoria compartida de Python en multiprocesamiento

Usando el multiprocesamiento en Python, un nuevo proceso puede ejecutarse de forma independiente y tener su propio espacio de memoria. Al ver los ejemplos a continuación, comprendamos en detalle el multiprocesamiento de objetos compartidos usando Python.

Código de ejemplo:

import multiprocessing

# an empty array globally declared
answer = []


def square_numbers(mynumbers):

    # for squaring array elements, a function has been used

    global answer
    # appending square numbers to a global array
    for n in mynumbers:
        answer.append(n * n)
    # print a global array for generating an answer
    print("Answer using first process: {}".format(answer))


if __name__ == "__main__":
    # input array
    mynumbers = [5, 10, 15]

    # new process has been created
    p = multiprocessing.Process(target=square_numbers, args=(mynumbers,))
    # process begins here
    p.start()
    # wait unless a process is completed
    p.join()

    # print a global array for generating an answer
    print("Answer using main program: {}".format(answer))

Producción :

Answer using first process: [25, 100, 225]
Answer using main program: []

Hemos impreso respuestas de matriz global en dos lugares utilizando el ejemplo anterior.

El proceso p se denomina función square_numbers para que los elementos de la matriz se cambien por el proceso p en el espacio de memoria.

El programa principal se ejecuta después de que se completa el proceso p, y obtendremos la matriz vacía como respuesta en el espacio de memoria.

El multiprocesamiento en Python proporciona objetos de valor y una matriz para compartir datos entre múltiples procesos.

Código de ejemplo:

import multiprocessing


def square_data(mydata, answer, square_sum):
    # a function has been made for squaring of given data

    # appending squares of mydata to the given array
    for ix, n in enumerate(mydata):
        answer[ix] = n * n

    # sum the square values
    square_sum.value = sum(answer)

    # print array of squared values for process p
    print("Answer in process p: {}".format(answer[:]))

    # print the sum of squared values for process p
    print("Sum of squares values in process p: {}".format(square_sum.value))


if __name__ == "__main__":
    # here, we input the data
    mydata = [1, 2, 3]

    # an array has been created for the int data type for three integers
    answer = multiprocessing.Array("i", 3)

    # value has been created for int data type
    square_sum = multiprocessing.Value("i")

    # new process has been created
    p = multiprocessing.Process(target=square_data, args=(mydata, answer, square_sum))

    # process begins from here
    p.start()

    # wait unless the process is completed
    p.join()

    # print an array of squared values for the main program
    print("Answer in main program: {}".format(answer[:]))

    # print the sum of squared values for the main program
    print("Sum of square values in main program: {}".format(square_sum.value))

Producción :

Answer in process p: [1, 4, 9]
Sum of squares in process p: 14
Answer in main program: [1, 4, 9]
Sum of squares in main program: 14

En el ejemplo anterior, creamos una matriz y le pasamos tres enteros. Hemos impreso una matriz de valores al cuadrado y luego una suma de valores al cuadrado para el proceso p.

Después de esto, nuevamente imprimimos una matriz de valores cuadrados y la suma de valores cuadrados para el programa principal.

Conclusión

Podría haber varias formas de explicar el multiprocesamiento de memoria compartida usando Python. Entonces, en este artículo, explicamos el concepto de memoria compartida de multiprocesamiento de cómo un objeto podría colocarse en el espacio de memoria compartida y ejecutarse de forma independiente.

Aparte de esto, también hemos aprendido que Python permite que los procesos compartan datos entre varios procesos.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - Python Multiprocessing