Erreurs d'exécution dans le multitraitement Python sous Windows
Lors de l'exécution de code multitraitement sur les systèmes d'exploitation Windows, vous pouvez rencontrer le message d'erreur suivant :
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.
Cause de l'erreur
Sous Windows, les sous-processus créés via le module multitraitement hériteront de l'environnement du processus principal. Lorsqu'un sous-processus est lancé, il tentera d'importer le module principal, ce qui peut conduire à une exécution récursive du code. Pour éviter cela, vous devez ajouter un garde if __name__ == '__main__' au module principal.
Solution
Pour résoudre le problème, modifiez le module principal comme suit :
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
Explication
La condition if __name__ == '__main__' vérifie si le code est exécuté directement à partir du module principal. Si cette condition est remplie, cela signifie que le script n'est pas importé par un autre module. Dans ce cas, vous pouvez créer en toute sécurité des sous-processus dans le module principal, car cela garantit que le code ne sera pas exécuté de manière récursive.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!