Heim >Backend-Entwicklung >Python-Tutorial >Warum erhalte ich „RuntimeError: Versuch, einen neuen Prozess zu starten …', wenn ich Multiprocessing in Python unter Windows verwende?
Laufzeitfehler beim Python-Multiprocessing unter Windows
Beim Ausführen von Multiprocessing-Code auf Windows-Betriebssystemen kann die folgende Fehlermeldung auftreten:
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.
Ursache der Fehler
In Windows erben Unterprozesse, die über das Multiprocessing-Modul erstellt wurden, die Umgebung des Hauptprozesses. Wenn ein Unterprozess gestartet wird, versucht er, das Hauptmodul zu importieren, was zu einer rekursiven Ausführung des Codes führen kann. Um dies zu verhindern, müssen Sie dem Hauptmodul einen if __name__ == '__main__'-Schutz hinzufügen.
Lösung
Um das Problem zu beheben, ändern Sie das Hauptmodul wie folgt:
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
Erklärung
Das Wenn __name__ == '__main__' Bedingung prüft, ob der Code direkt vom Hauptmodul ausgeführt wird. Wenn diese Bedingung erfüllt ist, bedeutet dies, dass das Skript nicht von einem anderen Modul importiert wird. In diesem Fall können Sie Unterprozesse sicher innerhalb des Hauptmoduls erstellen, da dadurch sichergestellt wird, dass der Code nicht rekursiv ausgeführt wird.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich „RuntimeError: Versuch, einen neuen Prozess zu starten …', wenn ich Multiprocessing in Python unter Windows verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!