ホームページ >バックエンド開発 >Python チュートリアル >組み込み関数でマルチプロセッシングの例で「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 サイトの他の関連記事を参照してください。