組み込み関数でマルチプロセッシングの例で「AttributeError」が発生するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-10-17 19:48:30
オリジナル
348 人が閲覧しました

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

マルチプロセッシングの例で AttributeError が発生する理由

マルチプロセッシングを詳しく調べようとして、ドキュメントの導入例を適応させているときに AttributeError が発生しました。

<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>
ログイン後にコピー

エラー: 「属性エラー: <モジュール '__main__' (組み込み)> で属性 'f' を取得できません」

この問題を解決するには、multiprocessing.Pool には独特の設計機能があることを理解することが重要です。 Python の問題 #25053 で指摘されているように、インポートされたモジュールで定義されていないオブジェクトを操作すると、プールが不安定になることがあります。回避策として、別のファイルで関数を定義し、モジュールをインポートできます。

次に例を示します:

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>
ログイン後にコピー

この変更により AttributeError が解決されるはずです。ただし、ドキュメントに記載されている例は、この潜在的な問題のため、初心者には最適ではない可能性があることに注意してください。

以上が組み込み関数でマルチプロセッシングの例で「AttributeError」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!