Ich versuche, einen Pool von identischen Prozessen auf einer Reihe von Kernen gleichzeitig auszuführen. Dies ist eine vereinfachte Version meines Codes. Es scheint, als ob meine Funktion nie von map_async
aufgerufen wird, und der Code wird blockiert (direkt nach print (4)
). Irgendeine Idee?multiprocessing.pool.map_async führt meine Funktion nicht
import multiprocessing
pairs = [['a','b'],['c','d'],['e','f'],['g','h']]
def printPairs(first, second):
print('pairs =', pairs)
def parallel(function, pairs):
cpu_no = multiprocessing.cpu_count()
if len(pairs) < cpu_no:
cpu_no = len(pairs)
p = multiprocessing.Pool(cpu_no)
p.map_async(function, pairs, chunksize=1)
print('3, p = ', p)
p.close()
print('4')
p.join()
print('5')
return
parallel(printPairs, pairs)
Ich habe das auch versucht. Das ist wirklich seltsam, da es immer noch nicht in meinem Computer läuft. Es bleibt genau am selben Punkt hängen. – Yair
Welche Python-Version und welches Betriebssystem? –
Python 3.5.1 (mit Anaconda 4.0.0) auf einem Windows 10. – Yair