Maison > Article > développement back-end > Pourquoi un exemple de multitraitement entraîne-t-il une \'AttributeError\' avec les fonctions intégrées ?
Dans une tentative de se plonger dans le multitraitement, un individu a rencontré une AttributeError en adaptant l'exemple d'introduction de la documentation :
<code class="python">from multiprocessing import Pool def f(x): return x*x if __name__ == '__main__': with Pool(5) as p: print(p.map(f, [1, 2, 3]))</code>
L'erreur : "AttributeError : impossible d'obtenir l'attribut 'f' sur le
Pour résoudre ce problème, il est important de comprendre que multiprocessing.Pool a une fonctionnalité de conception particulière. Comme indiqué dans le problème Python n° 25053, Pool échoue parfois lorsque vous travaillez avec des objets non définis dans les modules importés. Pour contourner le problème, vous pouvez définir votre fonction dans un fichier séparé et importer le module.
Voici un exemple :
defs.py :
<code class="python">def f(x): return x*x</code>
run.py :
<code class="python">from multiprocessing import Pool import defs if __name__ == '__main__': with Pool(5) as p: print(p.map(defs.f, [1, 2, 3]))</code>
Cette modification devrait résoudre l'AttributeError. Cependant, il convient de noter que l'exemple donné dans la documentation n'est peut-être pas le plus adapté aux débutants en raison de ce problème potentiel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!