Ich habe eine Funktion f, die ich auf bestimmten großen Daten parallel berechnen möchte. Die Daten können auf viele Arten geteilt werden, und ich versuche eine Entscheidung darüber zu treffen, wie man sie teilt. Ich versuche zu verstehen, wie "Karte" in Multiprocessing.Pool die Daten genau verteilen/teilen, so dass ich die richtige Entscheidung über die Aufteilung meiner Daten sowie die Auswahl der Anzahl der Prozessoren treffen. Meine Eingabedaten sind nicht einfach eine Liste, wie im folgenden Beispiel, sondern eine Liste von Wörterbüchern und eine Liste von Listen, die verstehen, wie Pool.map die Daten teilt.Wie teilt die Karte Daten auf, wenn sie zusammen mit Pool in Multiprocessing verwendet werden?
Davon abgesehen denke ich, dass das Verständnis des einfachen Beispiels über den komplizierteren erzählen würde.
Das folgende Scipt zeigt, dass wir einen Pool von 5 Prozessen und die Daten in [1,2,3] wählen. Was ist die implizite Wahl, die hier getroffen wird, um die Daten zu teilen?
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
p = Pool(5)
print(p.map(f, [1, 2, 3]))
Beziehen Sie sich hier auf ein spezifisches "n" (Anzahl der Prozesse)? – Steve
Ja, der Parameter zu Pool – quamrana