Reference Problem mit multiprocessing
Verfasst: Donnerstag 21. Mai 2015, 12:44
Hallo,
ich habe ein kleines Problem mit dem multiprocessing modul. Ausgangssituation ist, ich fülle eine Liste (data_stack) mit ndarrays die ich dann an einen Pool übergebe:
helper sieht folgendermaßen aus:
Das Problem ist, dass data in worker leider als Kopie übergeben wird und somit eine andere Adresse hat und meine übergeben ndarrays in data_stack folglich leer bleiben. Sorry wenn die Frage naiv ist, aber ich stehe etwas auf dem Schlauch wie ich das Problem löse. Der compute Funktion wird data[1], also das ndarray, nämlich wieder als Referenz übergeben, nur dem worker leider nicht. Denke das es daran liegt, dass multiprocessing die objekte pickled, aber wie würde ich das dann lösen? Wäre für jede Hilfe dankbar.
Mfg,
patrice
ich habe ein kleines Problem mit dem multiprocessing modul. Ausgangssituation ist, ich fülle eine Liste (data_stack) mit ndarrays die ich dann an einen Pool übergebe:
Code: Alles auswählen
pool = multiprocessing.Pool(processes=threads)
job_args = [(processors, params, dat,) for dat in data_stack] # data_stack liste mit Elementen [int, ndarray]
pool.map(helper, job_args)
Code: Alles auswählen
def helper(args):
worker(*args)
def worker(processors, params, data):
# loop over each processor
for n, compute in enumerate(processors):
compute(data[1], params) # <- data[1] type ndarray
Mfg,
patrice