Heim >Backend-Entwicklung >Python-Tutorial >Warum erhalte ich „RuntimeError: Versuch, einen neuen Prozess zu starten …', wenn ich Multiprocessing in Python unter Windows verwende?

Warum erhalte ich „RuntimeError: Versuch, einen neuen Prozess zu starten …', wenn ich Multiprocessing in Python unter Windows verwende?

DDD
DDDOriginal
2024-11-19 08:12:03508Durchsuche

Why Do I Get

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn