performance steigern mit threading
Verfasst: Dienstag 28. Juli 2020, 13:53
Hallo, ich habe nun meinen Code, bestehend aus 3 binären Programmteilen und mehreren ineinander greifenden Input und Output Files, zum Laufen gebracht. Ein erster Testlauf hat gezeigt, dass ich 1,3 Berechnungsläufe in der Sekunde schaffe, das ist mir jedoch für die geplanten 500tsd Rechenschritte weit zu langsam. Um die Performance zu steigern habe ich nun folgendes angestrebt:
Version 1:
Kopieren des Ordners mit sämtlichen Files auf in Summe 20 Stück (Ordner01, Ordner02,...) Anpassen der Parametersets, sodass je Ordner jeweils nur ca. 5000 Rechenvorgänge stattfinden = ca. 1 Stunde Rechenlauf und 50 Ordner. Starten des Skript jeweils im Terminal.
Version 2:
durch:
usw. habe ich die jeweiligen ca. 5000tsd Berechnungsschritte in definiert als zB def iteration_01(): "Berechnungsschritte" die jeweils in den entsprechenden Ordner zugreifen, jedoch ohne Erfolg, da scheinbar diese Prozesse nicht parallel verlaufen
Version 3:
Führte mich zu threading (Python 3), wobei ich hier komplett hänge.
Konkrete Fragestellung:
über zB. 50 def Positionen möchte ich die Laufzeit für den bereits erfolgreich durchlaufenden Berechnungslauf mittels parallel automatisch laufenden Berchnungsläufen verkürzen. Ist da eurer Meinung nach meine Version 2, oder 3 die Richtigere oder bin ich sowieso auf einem falschen Weg, wenn ja, bitte um einen Gedankenanstoß.
Danke
Version 1:
Kopieren des Ordners mit sämtlichen Files auf in Summe 20 Stück (Ordner01, Ordner02,...) Anpassen der Parametersets, sodass je Ordner jeweils nur ca. 5000 Rechenvorgänge stattfinden = ca. 1 Stunde Rechenlauf und 50 Ordner. Starten des Skript jeweils im Terminal.
Version 2:
durch:
Code: Alles auswählen
from multiprocessing import Process
Process(target=iteration_01).start()
Process(target=iteration_02).start()
Process(target=iteration_03).start()
Version 3:
Führte mich zu threading (Python 3), wobei ich hier komplett hänge.
Konkrete Fragestellung:
über zB. 50 def Positionen möchte ich die Laufzeit für den bereits erfolgreich durchlaufenden Berechnungslauf mittels parallel automatisch laufenden Berchnungsläufen verkürzen. Ist da eurer Meinung nach meine Version 2, oder 3 die Richtigere oder bin ich sowieso auf einem falschen Weg, wenn ja, bitte um einen Gedankenanstoß.
Danke