2010-01-20 7 views
6

Eventuali duplicati:
Multiprocessing launching too many instances of Python VMPerché il modulo di multiprocessing di Python causa l'esaurimento della CPU?

Sto provando Python 2.6 il modulo multiprocessing con questo semplice frammento di codice.

from multiprocessing import Pool 
p = Pool(5) 
def f(x): 
    return x*x 

print p.map(f, [1,2,3]) 

Ma questo codice causa il mio sistema operativo non risponde. Sembra che la CPU sia troppo occupata. Cosa c'è di sbagliato nel mio codice?

BTW: sembra che il modulo di multiprocessing sia un po 'pericoloso. Ho dovuto riavviare il mio computer.

risposta

7

Non si sta proteggendo affatto il punto di ingresso, quindi ogni sottoprocesso sta tentando di avviare la stessa chiamata map e così via (all'infinito!). Provare quanto segue:

if __name__ == "__main__": 
    print p.map(f, [1,2,3]) 

Vedi this section della documentazione del modulo.

+0

@Trent: questo non va bene :) – jkp

+0

vedere questo: http://stackoverflow.com/questions/1923706/multiprocessing-launching-too-many-instances-of-python-vm –

Problemi correlati