2010-01-20 4 views
6

Possible en double:
Multiprocessing launching too many instances of Python VMPourquoi le module multiprocesseur python entraîne l'épuisement complet du processeur?

Je suis en train python 2.6 module multiprocessing avec ce simple extrait de code.

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

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

Mais ce code provoque mon système d'exploitation a cessé de répondre. Il semble que le processeur soit trop occupé. Quel est le problème avec mon code?

BTW: il semble que le module multitraitement soit un peu dangereux. J'ai dû redémarrer mon ordinateur.

Répondre

7

Vous ne protégez pas le point d'entrée, donc chaque sous-processus essaie de lancer le même appel map et ainsi de suite (dans l'infini!). Effectuez les opérations suivantes:

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

Voir this section de la documentation du module.

+0

@Trent: ce n'est pas bon :) – jkp

+0

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

Questions connexes