web-dev-qa-db-ja.com

freeze_support()をPythonスクリプトに入れますか?

multiprocessingfreeze_support()を使用すると混乱し、Runtime Errorなし。関数またはモジュールを定義するのではなく、スクリプトのみを実行しています。まだ使用できますか?または、インポートするパッケージはそれを使用していたはずですか?

ここ はドキュメントです。

特定の問題はscikit-learnGridSearchCVを呼び出して、プロセスを並行して生成しようとします。このためにスクリプトを凍結する必要があるのか​​、それとも(Anacondaディストリビューションから)呼び出されるコードを凍結する必要があるのか​​わかりません。詳細がこの質問に関連する場合は、より具体的な question に進んでください。

21
László

Windowsでは、allmultiprocessing--を使用するコードは_if __name__ == "__main__":_で保護する必要があります

安全のため、現在スクリプトのトップレベルにあるすべてのコードをmain()関数に入れてから、トップレベルでこれを実行します。

_if __name__ == "__main__":
    main()
_

これが必要な理由については、「メインモジュールの安全なインポート」サブセクション here を参照してください。おそらく_freeze_support_を呼び出す必要はありませんが、それを含めることには何の害もありません。

いずれにせよ、スクリプトに_if __name__ == "__main__"_ガードを使用するのがベストプラクティスであることに注意してください。そうすれば、将来のある時点でスクリプトを別のスクリプトにimportする必要がある場合に、コードが予期せず実行されることはありません。

45
dano