使用 Python 多处理时修复 Windows 上的运行时错误
如果主模块不正确,Python 多处理可能会在 Windows 系统上遇到“运行时错误”配置。错误消息通常建议使用“freeze_support()”函数来纠正此问题。然而,让我们深入研究一个特定的场景,其中线程在单独的模块中管理,导致相同的错误。
代码涉及一个主模块(“testMain.py”),它导入模块处理进程并线程(“parallelTestModule.py”)并调用其“runInParallel”方法。在“parallelTestModule.py”中,进程在“ParallelExtractor”类中定义,该类使用“multiprocessing”模块中的“Process”类初始化进程。
问题的症结在于缺乏主模块(“testMain.py”)中的“if name == '__main__':”守卫。此防护确保子进程不会递归地导入主模块。在 Windows 上执行时,子进程会在开始时执行主模块,从而导致递归循环。
要解决此问题,您需要在主模块(“testMain.py”)中插入此守卫:
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
通过此修改,仅当程序直接运行时主模块才会充当入口点,防止子进程的递归执行并允许多处理在 Windows 上正确运行。
以上是当在单独的模块中管理线程时,为什么 Python 多处理会在 Windows 上导致运行时错误?的详细内容。更多信息请关注PHP中文网其他相关文章!