Ich bin neu bei Python und habe angefangen, einen genetischen Algorithmus (GA) zu verwenden, um eine Art Kurvenanpassung durchzuführen. Für diesen GA verwende ich die (tolle) Pyvevolve-Bibliothek (http://pyevolve.sourceforge.net/), die in der Lage ist, die Rechenzeit durch Verwendung von Multiprocessing enorm zu reduzieren.PYTHON Globale Variable von jedem Prozess aus zugänglich machen
Hier tritt mein Problem auf: Die Kurve, die ich annähern möchte, ist ein Array, das aus einer Excel-Datei gelesen und als eine globale Variable am Anfang meines Programms gespeichert wird. Bei Verwendung des Python-Multiprocessing-Moduls erstellt jeder Prozess seine eigene Instanz von Python mit einer eigenen globalen Variablen. Das veranlasst jedes Individuum, in jeder Generation des Algorithmus (bedeutet jeden Prozess), die Excel-Datei immer wieder zu öffnen und zu lesen. Das Öffnen großer Excel-Dateien kann eine immense Menge an Zeit verursachen, daher wäre es schön, diese Datei nur einmal zu öffnen und das Lese-Array für jeden Prozess/jedes Individuum verfügbar zu machen.
Das Multiprocessing wird in der Pyvevolve-Bibliothek initiiert und ich möchte es nicht ändern, damit es einfach zu aktualisieren ist. Unglücklicherweise bedeutet dies, dass die Variable einfach über , z.B.
p = Process(target=my_func,args=(my_array))
ist keine Option für mich. Dies ist die einzige Lösung, die ich bisher gefunden habe.
Kennt jemand eine andere Möglichkeit, my_array von jedem Prozess zugänglich zu machen?
Vielen Dank im Voraus!
Vielleicht finden Sie dort eine geeignete Lösung: https://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes –