Windows での Python マルチプロセッシングのランタイム エラー
Windows オペレーティング システムでマルチプロセッシング コードを実行すると、次のエラー メッセージが表示される場合があります。
RuntimeError: Attempt to start a new process before the current process has finished its bootstrapping phase. This probably means that you are on Windows and you have forgotten to use the proper idiom in the main module: if __name__ == '__main__': freeze_support() ... The "freeze_support()" line can be omitted if the program is not going to be frozen to produce a Windows executable.
エラーの原因
Windows では、マルチプロセッシング モジュールを通じて作成されたサブプロセスは、メイン プロセスの環境を継承します。サブプロセスが起動されると、メイン モジュールのインポートが試行され、コードが再帰的に実行される可能性があります。これを防ぐには、メイン モジュールに if __name__ == '__main__' ガードを追加する必要があります。
解決策
問題を解決するには、メイン モジュールを変更します。
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
説明
if __name__ == '__main__' 条件は、コードがメイン モジュールから直接実行されているかどうかをチェックします。この条件が満たされる場合は、スクリプトが別のモジュールによってインポートされていないことを意味します。この場合、コードが再帰的に実行されないことが保証されるため、メイン モジュール内にサブプロセスを安全に作成できます。
以上がWindows で Python でマルチプロセッシングを使用すると、「RuntimeError: Attempt to start a new process...」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。