Python Multiprocessing Shared Object

Zeeshan Afridi 21 Juni 2023
  1. Verwenden Sie Python Shared Memory-Objekte in Multiprocessing
  2. Abschluss
Python Multiprocessing Shared Object

In Python besteht Shared Memory Multiprocessing aus der Verbindung mehrerer Prozessoren, aber diese Prozessoren müssen direkten Zugriff auf den Hauptspeicher des Systems haben. Dadurch können alle angeschlossenen Prozessoren auf die Daten anderer Prozessoren zugreifen, die sie verwendet oder erstellt haben.

Verwenden Sie Python Shared Memory-Objekte in Multiprocessing

Durch die Verwendung von Multiprocessing in Python kann ein neuer Prozess unabhängig ausgeführt werden und seinen eigenen Speicherplatz haben. Lassen Sie uns anhand der folgenden Beispiele die Mehrfachverarbeitung gemeinsam genutzter Objekte mit Python im Detail verstehen.

Beispielcode:

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))

Ausgang:

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

Wir haben anhand des obigen Beispiels an zwei Stellen globale Array-Antworten gedruckt.

Der Prozess p wird als square_numbers-Funktion bezeichnet, damit die Array-Elemente für den Prozess p im Speicherbereich geändert würden.

Das Hauptprogramm wird ausgeführt, nachdem der Prozess p abgeschlossen ist, und wir erhalten das leere Array als Antwort im Speicherbereich.

Multiprocessing in Python stellt Wertobjekte und ein Array für die gemeinsame Nutzung von Daten zwischen mehreren Prozessen bereit.

Beispielcode:

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))

Ausgang:

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

Im obigen Beispiel haben wir ein Array erstellt und ihm drei Ganzzahlen übergeben. Wir haben ein Array von Quadratwerten und dann eine Summe von Quadratwerten für den Prozess p gedruckt.

Danach druckten wir erneut ein Array von Quadratwerten und die Summe der Quadratwerte für das Hauptprogramm.

Abschluss

Es könnte mehrere Möglichkeiten geben, Shared Memory Multiprocessing mit Python zu erklären. In diesem Artikel haben wir also das Multiprocessing-Shared-Memory-Konzept erklärt, wie ein Objekt im Shared-Memory-Bereich abgelegt und unabhängig ausgeführt werden kann.

Abgesehen davon haben wir auch gelernt, dass Python es Prozessen ermöglicht, Daten zwischen verschiedenen Prozessen auszutauschen.

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

Verwandter Artikel - Python Multiprocessing