Hier mein Testcode ist mehrere Verfahren, um zu versuchen Ausführung:, wie das Ergebnis in verschiedenen Teilprozess aggregieren mit Multiprozessing
from multiprocessing import Process, Pool, Queue
a = []
def long_time_task(name):
print 'run task %s (%s)' % (name,os.getpid())
start = time.time()
time.sleep(random.random() * 3)
end = time.time()
a.append(name)
print a
if __name__ == '__main__' :
print 'parent process %s' % os.getpid()
p = Pool(5)
for i in range(10):
p.apply_async(long_time_task,args = (i,))
print 'waiting for all subprocess done'
print a
p.close()
p.join()
print 'all subprocesses done'
Von jedem Subprozess, konnte ich verschiedene Segmente am Ende nach p.join()
, wie [4, 7],[2],[1, 6],[3, 5],[0, 8, 9]
erhalten gedruckt. Aber das Problem ist, wie man diese Segmente zu einer Einheit [0,1, ..., 10] aggregiert, um zu drucken?
Alle Gedanken wären hilfreich.