Ich habe ein Programm mit Python Multiprocessing. Ich finde, dass der gesamte Prozess, der in den Hauptprogrammen erstellt wurde, beendet werden kann, aber das Hauptprogramm immer auf die Rückgabewerte wartet und nicht aufhören kann. Kann mir jemand Vorschläge machen, wie ich dieses Problem lösen kann?Prozess kann nicht in Python Multiprocessing-Pool stoppen
Die Code-Schnipsel ist wie folgt:
Hauptprogramm:
workers = multiprocessing.Pool(4)
args = [arg1, arg2, arg3, arg4]
results = workers.map(subfunc, args)
print "we are in main functions "
subfunc (* arg)
# doing some other jobs
result = {.....} # a large dictionary
print 'done with sub functions'
return result # if I change it to "return 1", it can finish successfully
ich die Ausgabe für alle "mit Unterfunktionen done" sehen die in main angelegten Prozesse, aber keine Ausgaben "Wir sind in Hauptfunktionen". Kann mir jemand helfen, das Problem herauszufinden?
Können Sie testen, um zu entsprechen, dass die Ergebnisse eine Länge haben? Dieses Verhalten kann dazu führen, dass die Schleife nie ausgeführt wird. – mklauber
Es kann sein, dass das Ergebniswörterbuch rekursive Referenzen hat und es nicht zu einem Pickle wird. Versuchen Sie, es zu schreiben, um als Essiggurke oder Json auszugeben. – j13r
Das habe ich gerade gemacht und es funktioniert. Danke – hanqiang