Python-multiprocessing für parallele Prozesse

Tut mir Leid wenn das zu einfach für einige Leute, aber ich verstehe immer noch nicht den trick mit python-multiprocessing. Ich habe gelesen

http://docs.python.org/dev/library/multiprocessing

http://pymotw.com/2/multiprocessing/basics.html
und viele andere tutorials und Beispiele, die google mir gibt,... viele von Ihnen von hier aus zu.

Gut, meine situation ist die, dass ich haben, um zu berechnen, viele numpy-Matrizen, und ich brauche, um Sie zu speichern in einer einzigen numpy matrix hinterher. Sagen wir, ich will mit 20 cores (oder, dass ich 20 Kerne) aber ich habe es nicht geschafft, erfolgreich in den pool Ressource, da es hält die Prozesse am Leben, bis der pool "stirbt". Also ich dachte an sowas:

from multiprocessing import Process, Queue  
import numpy as np  

def f(q,i):  
     q.put( np.zeros( (4,4) ) ) 

if __name__ == '__main__':   
     q = Queue()   
     for i in range(30):   
          p = Process(target=f, args=(q,))  
          p.start()  
          p.join()  
     result = q.get()  
     while q.empty() == False:
          result += q.get()  
     print result

aber dann sieht es aus wie die Prozesse laufen nicht parallel, sondern Sie laufen nacheinander (bitte korrigiert mich wenn ich falsch Liege) und ich weiß nicht, ob Sie sterben, nachdem Sie Ihre Berechnung (also für mehr als 20 Prozesse, die diejenigen, die haben Ihren Teil verlassen Sie den Kern frei für einen anderen Prozess). Plus, für eine sehr große Anzahl (sagen wir 100.000), speichern alle diese Matrizen einen (wirklich groß) in eine Warteschlange verwenden eine Menge Speicher, die rendering-code nutzlos ist, da die Idee ist, jedes Ergebnis bei jeder iteration in der letzten Folge, wie Sie mit einem Schloss (und seinem Erwerb() und release () - Methoden), aber wenn dieser code nicht für die parallele Verarbeitung, die Sperre ist nutzlos...

Ich hoffe, jemand kann mir helfen.

Vielen Dank im Voraus!

InformationsquelleAutor Carlos | 2012-01-06
Schreibe einen Kommentar