2010-01-20 14 views
6

Duplicar posible:
Multiprocessing launching too many instances of Python VM¿Por qué el módulo de multiprocesamiento de python hace que la CPU se agote por completo?

estoy tratando pitón 2.6 módulo de multiprocesamiento con este simple fragmento de código.

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

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

Pero este código hace que mi sistema operativo deje de responder. Parece que la CPU está demasiado ocupada. ¿Qué pasa con mi código?

BTW: parece que el módulo de multiprocesamiento es un poco peligroso. Tuve que reiniciar mi computadora.

Respuesta

7

No está protegiendo el punto de entrada, por lo que cada subproceso está intentando iniciar la misma llamada map y así sucesivamente (¡hasta el infinito!). Pruebe lo siguiente:

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

Ver this section de la documentación del módulo.

+0

@Trent: eso no es bueno :) – jkp

+0

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

Cuestiones relacionadas