Ho incontrato un problema, in cui Python si chiude improvvisamente, quando si esegue il multiprocessing con numpy. Ho isolato il problema, in modo che ora posso confermare che il multiprocessing funziona perfettamente quando si esegue il codice di seguito riportato:La multiprocessing con numpy fa in modo imprevisto Python su OSX
import numpy as np
from multiprocessing import Pool, Process
import time
import cPickle as p
def test(args):
x,i = args
if i == 2:
time.sleep(4)
arr = np.dot(x.T,x)
print i
if __name__ == '__main__':
x = np.random.random(size=((2000,500)))
evaluations = [(x,i) for i in range(5)]
p = Pool()
p.map_async(test,evaluations)
p.close()
p.join()
Il problema si verifica quando si tenta di valutare il codice qui sotto. Questo rende Python chiusura imprevista:
import numpy as np
from multiprocessing import Pool, Process
import time
import cPickle as p
def test(args):
x,i = args
if i == 2:
time.sleep(4)
arr = np.dot(x.T,x)
print i
if __name__ == '__main__':
x = np.random.random(size=((2000,500)))
test((x,4)) # Added code
evaluations = [(x,i) for i in range(5)]
p = Pool()
p.map_async(test,evaluations)
p.close()
p.join()
Si prega di aiutare qualcuno. Sono aperto a tutti i suggerimenti. Grazie. Nota: ho provato due macchine diverse e si verifica lo stesso problema.
mi sono imbattuto il codice su Windows7/64bit utilizzando WinPython. Entrambi i casi sono eseguiti e sono usciti senza errori. – alandarev
Ci scusiamo per questo. Interessante che funzioni su Windows. Qualsiasi utente Apple che può spiegarmi perché questo si verifica? – Maal
Potrei averti ingannato, quando ho fatto il mio commento di rabbia su Apple usando termine "inaspettato" ovunque. Sto seriamente dubitando che il tuo problema sia specifico del sistema operativo. Potresti provare a eseguire lo script che hai postato su clean Python con installazione numpy per vedere se il problema persiste? – alandarev