Python マルチプロセッシングの使用中に Windows で RuntimeError を修正する
メイン モジュールが適切でない場合、Windows システムで Python マルチプロセッシングで「RuntimeError」が発生する可能性があります設定されています。通常、エラー メッセージは、この問題を修正するために「freeze_support()」関数を使用することを提案します。ただし、スレッドが別のモジュールで管理され、同じエラーが発生する特定のシナリオを詳しく見てみましょう。
このコードには、モジュール処理プロセスとモジュールをインポートするメイン モジュール (「testMain.py」) が含まれています。スレッド (「ParallelTestModule.py」) を実行し、その「runInParallel」メソッドを呼び出します。 「ParallelTestModule.py」では、プロセスは「ParallelExtractor」クラス内で定義され、「multiprocessing」モジュールの「Process」クラスを使用してプロセスを初期化します。
問題の核心は、メインモジュール (「testMain.py」) の「if name == '__main__':」ガード。このガードにより、サブプロセスがメイン モジュールを再帰的にインポートしないことが保証されます。 Windows で実行すると、サブプロセスは最初にメイン モジュールを実行し、再帰ループが発生します。
問題を解決するには、このガードをメイン モジュール (「testMain.py」) に挿入する必要があります。
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
この変更により、メイン モジュールはプログラムが直接実行される場合にのみエントリ ポイントとして機能し、サブプロセスの再帰的な実行を防ぎ、Windows 上でマルチプロセッシングが正しく機能できるようになります。
以上がスレッドが別のモジュールで管理されている場合、Windows で Python マルチプロセッシングによって RuntimeError が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。