Pourquoi un exemple de multitraitement entraîne-t-il une \'AttributeError\' avec les fonctions intégrées ?

Mary-Kate Olsen
Libérer: 2024-10-17 19:48:30
original
434 Les gens l'ont consulté

Why Does Multiprocessing Example Result in 'AttributeError' with Built-in Functions?

Pourquoi un exemple de multitraitement donne AttributeError

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>
Copier après la connexion

L'erreur : "AttributeError : impossible d'obtenir l'attribut 'f' sur le " a rendu l'utilisateur perplexe.

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal