Mit parallelpython, versuche ich meinen alten seriellen Code in parallel zu konvertieren, die sich stark auf basiert Objekte mit Methoden, die die Variablen dieses Objekts ändern. Ein gestrippt Beispiel, in dem ich die Syntax für Einfachheit auslassen:In ParallelPython kann eine Methode eines Objekts (object.func()) eine Variable eines Objekts (object.value) nicht manipulieren
class Network:
self.adjacency_matrix = [ ... ]
self.state = [ ... ]
self.equilibria = [ ... ]
...
def populate_equilibria(self):
# this function takes every possible value that self.state can be in
# runs the boolean dynamical system
# and writes an integer within self.equilibria for each self.state
# doesn't return anything
Ich nenne diese Methode als: Code:
j1 = jobserver.submit(net2.populate_equilibria,(),(),("numpy as num"))
Der Job sumbitted ist, und ich weiß, dass eine lange Berechnung dauert Ort, so spekuliere ich, dass mein Code ausgeführt wird.
Das Problem ist, ich bin neu zu Parallelpython, ich hatte erwartet, dass, wenn die Methode aufgerufen wird, würde die Variable net2.equilibria entsprechend geschrieben werden, und ich würde ein überarbeitetes Objekt (net2) bekommen. So funktioniert mein Code, unabhängige Objekte mit Methoden, die auf die Variablen des Objekts einwirken.
Obwohl die Berechnung offensichtlich und zeitlich angemessen ist, bleibt die Variable net2.equilibria unverändert. Als ob PP nur die Funktion und das Objekt übernimmt, berechnet es an anderer Stelle, aber gibt das Objekt nie zurück, so dass ich mit dem alten zurückgeblieben bin.
Was vermisse ich?
Vielen Dank im Voraus.
Dank. Das war sehr umfassend. –