Ich versuche, ein Problem zu lösen. Ich würde mich über Ihren wertvollen Beitrag zu diesem Thema freuen.Multiprocessing mit großer Anzahl von Dateien
Problemstellung: Ich versuche, viele Dateien (in der Größenordnung von 10 ** 6) im selben Basisverzeichnis zu lesen. Jede Datei hat den Namen nach dem Muster (YYYY-mm-tt-hh) und der Inhalt der Dateien ist wie folgt
mm1, vv1
mm2, vv2
mm3, vv3
.
.
.
wo mm
die Minute des Tages ist und vv
“ist einiger Zahlenwert in Bezug auf diese Minute. Ich muss feststellen, dass bei einer Startzeit (ex. 2010-09-22-00) und einer Endzeit (ex. 2017-09-21-23) der Durchschnitt aller vv
's ist.
Also im Grunde Benutzer wird mir eine start_date
und end_date
, und ich werde den Durchschnitt aller Dateien zwischen dem angegebenen Datumsbereich erhalten müssen. So würde meine Funktion so etwas wie diese:
get_average(start_time, end_time, file_root_directory):
Nun, was ich will, verstehen, wie kann ich Multiprozessing verwenden, um die kleineren Stücke mitteln, und dann auf das bauen, um die endgültigen Werte zu bekommen.
HINWEIS: Ich suche keine lineare Lösung. Bitte teilen Sie mir mit, wie ich das Problem in kleineren Brocken brechen und dann zusammenfassen kann, um den Durchschnitt zu finden. Ich habe versucht, mit multiprocessing
Modul in Python durch Erstellen eines Pools von 4 Prozessen, aber ich bin nicht in der Lage, herauszufinden, wie ich die Werte im Speicher behalten und das Ergebnis für alle Stücke zusammen.
Zusätzlich zu sehr breit, ist es unklar, was Sie genau wissen möchten. Das heißt, eine allgemeine (und sehr gebräuchliche) Art der Kommunikation zwischen Prozessen besteht darin, ein oder mehrere "multiprocessing.Queue" -Objekte zu verwenden. – martineau
Nun, ich stimme der Aussage ist breit, und ich stimme auch realistisch, kein Dateisystem könnte 10^6 Dateien in einem einzigen Verzeichnis zu behandeln. Das heißt, mein Hauptziel hier ist, einen Prototyp zu bauen – Geek