Ich habe eine Klassenfunktion (nennen wir es "alpha.py"), die Multiprocessing (Prozesse = 2) verwendet, um einen Prozess zu forktieren und ist Teil eines Python-Pakets, das ich geschrieben habe. In einem separaten Python-Skript (nennen wir es "beta.py") habe ich ein Objekt aus dieser Klasse instanziiert und die entsprechende Funktion aufgerufen, die Multiprocessing verwendet. Schließlich ist all dies in ein Wrapper-Python-Skript eingebettet (nennen wir es "gamma.py"), das viele verschiedene Klassenobjekte und Funktionen behandelt.Python Multiprocessing RuntimeError unter Windows
wesentlichen in Betracht:
- Run ./gamma.py von der Befehlszeile
- gamma.py verwendet Subprozess und führt beta.py
- beta.py ein Objekt aus der Klasse instanziiert alpha.py und ruft die Funktion auf, die Multiprocessing verwendet (Prozesse = 2)
Dies hat keine Probleme, auf einem Mac oder Linux ausgeführt werden. Es wird jedoch ein Problem auf einem Windows-Rechner und den Fehler (und Dokumentation) schlägt vor, dass ich diese irgendwo schreiben soll:
if __name__ == '__main__':
freeze_support()
This other post erwähnt auch das gleiche tun.
Allerdings weiß ich nicht genau, wo diese beiden Zeilen liegen sollten. Derzeit enthält weder alpha.py, beta.py noch gamma.py einen Abschnitt if __name__ == '__main__':
. Es wäre großartig, wenn mir jemand sagen könnte, wohin diese zwei Zeilen gehen sollten und auch die Gründe dahinter.
Können Sie eine Fehlermeldung erhalten, die Sie damit bekommen? Stapelverfolgung? Hast du das gelöst? Ich bin überrascht, dass es keine Antwort darauf gab. –