Windows 上的 Python 多处理中的运行时错误
在 Windows 操作系统上执行多处理代码时,您可能会遇到以下错误消息:
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.
原因错误
在Windows中,通过多处理模块创建的子进程将继承主进程的环境。当子进程启动时,它将尝试导入主模块,这可能导致代码的递归执行。为了防止这种情况,您需要在主模块中添加 if __name__ == '__main__' 保护。
解决方案
要解决此问题,请修改主模块作为如下:
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
说明
if __name__ == '__main__' 条件检查代码是否直接从主模块执行。如果满足此条件,则意味着该脚本没有被其他模块导入。在这种情况下,您可以安全地在主模块中创建子流程,因为它确保代码不会递归执行。
以上是为什么在 Windows 上的 Python 中使用多重处理时会出现'运行时错误:尝试启动新进程...”?的详细内容。更多信息请关注PHP中文网其他相关文章!