Ich versuche, Multiprocessing in den Kopf zu bekommen. Ich habe eine Liste, ich teile sie in zwei gleich lange Teile, sortiere sie in zwei getrennten Prozessen. Ich weiß, dass dieser Teil funktioniert, weil das Drucken saveto
mir die zwei Listen gibt. Aber ich kann nicht auf sie zugreifen, weil ich am Ende zwei leere Listen bekomme. Warum kann ich nicht darauf zugreifen, was ich in l1
und l2
geschrieben habe und wie mache ich das?Parallele Verarbeitung von Listen
import multiprocessing
import random
def sort(l, saveto):
saveto = sorted(l)
print saveto
if __name__ == '__main__':
l = [int(100000*random.random()) for i in xrange(10000)]
listlen = len(l)
halflist = listlen/2
l1 = []
l2 = []
p1 = multiprocessing.Process(target=sort, args=(l[0:halflist], l1))
p2 = multiprocessing.Process(target=sort, args=(l[halflist:listlen], l2))
p1.start()
p2.start()
p1.join()
p2.join()
print l1
print l2
Das Update funktioniert gut. Vielen Dank. – doc
Sie scheinen nicht gleichzeitig zu laufen. 'p2' scheint zu warten, bis' p1' endet. Wie führe ich sie gleichzeitig? – doc
Sie laufen gleichzeitig. Wenn Sie hinzufügen, um Funktionsschleife mit 'print' und' time.sleep() 'zu sortieren, können Sie es sehen. –