wo freeze_support() in ein Python-script?
Bin ich verwirrt über die Verwendung freeze_support()
für multiprocessing
und ich bekomme eine Runtime Error
ohne es. Ich bin nur ein Skript ausgeführt wird, nicht die Definition einer Funktion oder eines Moduls. Kann ich die dennoch benutzen? Oder die Pakete, die ich importieren sollte, es zu benutzen?
Hier ist die Dokumentation.
Beachten Sie, dass das spezifische Problem zu scikit-learn
aufrufen GridSearchCV
die versucht, um zu laichen-Prozesse parallel. Ich bin nicht sicher, ob mein Skript muss eingefroren werden oder der code, die aufgerufen wird (von der Anaconda Distribution). Wenn details sind von Bedeutung für diese Frage, bitte den Kopf über die spezifischen Frage.
- Wie wird dein script ausgeführt?
- OK, dann die spezielle Frage relevant ist. Ich habe meinen gesamten code dort eingefügt. (Aber der link verwies auf die falsche Frage, ich fixe es.) Ausgeführt in einem eigenen Python-interpreter (von Spyder).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unter Windows alle Ihrer
multiprocessing
-code verwenden müssen, bewacht vonif __name__ == "__main__":
So, um sicher zu sein, würde ich alle deine der code derzeit bei den top-level in Ihrem Skript in einem
main()
Funktion, und dann nur diese auf der top-Ebene:Finden Sie in der "Sicheren Import von Haupt-Modul" sub-Abschnitt hier für eine Erklärung, warum dies notwendig ist. Sie wahrscheinlich nicht brauchen, zu nennen
freeze_support
an alle, obwohl es nicht Schaden, etwas aufzunehmen.Beachten Sie, dass es ist eine bewährte Methode zu nutzen, die
if __name__ == "__main__"
guard für Skripte sowieso, so dass den code nicht unerwartet ausgeführt, wenn Sie feststellen, Sie brauchen, umimport
Sie Ihr Skript in ein anderes Skript irgendwann in der Zukunft.