Ich bin verwirrt über die Verwendung von freeze_support()
für multiprocessing
und ich bekomme ein Runtime Error
ohne es. Ich führe nur ein Skript aus und definiere keine Funktion oder ein Modul. Kann ich es noch benutzen? Oder die Pakete, die ich importiere, sollten es benutzt haben?
Hier ist die Dokumentation.
Beachten Sie, dass es sich bei dem spezifischen Problem um scikit-learn
calling GridSearchCV
handelt, das versucht, Prozesse parallel zu erzeugen. Ich bin mir nicht sicher, ob mein Skript dafür eingefroren werden muss, oder der Code, der aufgerufen wird (aus der Anaconda-Distribution). Wenn Details für diese Frage relevant sind, besuchen Sie die spezifischere Frage .
Unter Windows muss all Ihres multiprocessing
-benutzenden Codes von if __name__ == "__main__":
Um sicher zu sein, würde ich all Ihren Code auf die oberste Ebene Ihres Skripts in einer main()
-Funktion setzen und dies dann auf oberster Ebene tun:
Siehe den Unterabschnitt "Sicheres Importieren des Hauptmoduls" hier für eine Erklärung von warum das notwendig ist. Sie müssen wahrscheinlich freeze_support
überhaupt nicht aufrufen, obwohl es nichts schadet, es einzuschließen.
Beachten Sie, dass es eine bewährte Methode ist, den if __name__ == "__main__"
-Wächter für Skripts trotzdem zu verwenden, damit der Code nicht unerwartet ausgeführt wird, wenn Sie zu einem späteren Zeitpunkt in einem anderen Skript import
des Skripts eingeben müssen.
Tags und Links python scikit-learn multiprocessing runtime-error anaconda