mich treibt erneut eine Frage um, auf die ich nicht so recht eine Antwort finde.

Ich habe mir die letzten Tage einige Postings durchgelesen und auf YT verschiedene Videos zum Thema Multiprocessing und Threading angesehen.
Für mich kam dabei heraus, dass mein Script ehr CPU basiert arbeitet und nicht auf I/O Opperationen zurückgreift. Lediglich das einlesen der Daten im ersten Schritt, anschließend werden nurnoch Berechnungen durchgeführt.
Es geht mir darum, dass ich den unterhalb beschriebenen Prozess deutlich beschleunigen möchte, sofern das möglich ist.
Es geht darum, dass ich ein Script habe welches in einem ersten Schritt, Daten per csv-modul von meinem PC einließt, diese Daten in einem Dictionary "speichert" und diese dann im folgenden verwendet, Berechnungen, Vergleiche anstellt und dann wieder in einem Dict. "speichert" und von dort aus per csv-modul wieder in eine Datei schreibt. Der Ganze Prozess dauert aktuell ca. 90 Minuten.
Das Dictionary enthält 19 Key:Value Paare. Der dem Key zuegordnete Value ist jeweils eine Liste mit jeweils 650.000 Einträgen.
Im Folgenden rufe ich eine Funktion auf, welche eine Liste Zeile für Zeile von Index 0 an durchläuft und dabei auf Kriterien in der gleichen Zeile untersucht.
Wenn ein Kriterium zutrifft (ganz vereinfacht gesagt, aber Sinngemäß entsprechend: Wert in Liste1 an Stelle 10 > Wert in Liste2 an Stelle 10) dann werden weitere Funtkionen aufgerufen in denen die Werte aus der zutreffenden Zeile verrechnet und in einem anderen Dictionary "gespeichert" werden.
Hierbei ist wichtig zu wissen, dass die einzeln aufgerufenen Funktionen auf die Werte ("gespeichert" im Dictionary) der zuvor aufgerufenen Funktion zurückgreifen. Somit ist die folgende Funktion immer erst aufrufbar, wenn die vorherige Funktion ihre Berechnung abgeschlossen hat.
Kurzes Beispiel:
Wenn nun ein Kriterium erfüllt ist, dann rufe ich die Funktion calc_profit(last_price) auf. Diese Funktion berechnet nun den erziehlten Profit aus dem letzten Preis, schreibt die berechnete Größe in ein Dictionary. Im Anschluss wird dann eine weitere Funktion calc_new_balance()aufgerufen welche aus dem Dictionary den zuvor berechneten Profit abruft und den neuen Kontostand berechnet.
Nachdem nun für das Kriterium alle Funktionen aufgerufen wurden und alle Werte berechnet sind, wird zur ursprünglichen Funktion zurückgekehrt, in der die Liste weiter, Zeile für Zeile durchlaufen wird.
Es gibt noch zahlreiche weitere Funktionen, welche aber alle auf dem selben Schema wie oben beschrieben agieren. Es wird alles über das "speichern" und "lesen" in den Dictionarys und Listen erledigt.
Keine der Funktionen returned einen Wert.
Ich würde euch gerne Beispielcode hier reinstellen, nur fällt es mir schwer den passenden Part aus den 500 Zeilen Code hier reinzustellen.
Mir wäre geholfen, wenn ihr mir sagen könntet ob ich zur Beschleunigung nun auf einen Prozessbasierten Ansatz (Multiprocessing) oder auf einen Threadbasierten Ansatz (Concurrent-Futures, Threading) setzen sollte.
Vielen lieben Dank für eure erneute Hilfe.
Viele Grüße
Christian