Windows 多重处理错误:运行时错误
尝试在 Windows 上使用多重处理时,用户可能会遇到以下错误:
RuntimeError: Attempt to start a new process before the current process has finished its bootstrapping phase.
出现此错误是因为 Windows 子进程在初始化时导入主模块,可能导致递归子进程创建。为了避免这种情况,在主模块中包含 if __name__ == '__main__': 保护至关重要。这可以防止在主模块内创建子进程。
考虑以下代码片段,它演示了问题:
testMain.py:
import parallelTestModule extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
parallelTestModule.py:
import multiprocessing from multiprocessing import Process class ParallelExtractor: def runInParallel(self, numProcesses, numThreads): myprocs = [] for pid in range(numProcesses): pr = Process(target=self.runp, args=(pid, numThreads)) myprocs.append(pr) for i in myprocs: i.start() for i in myprocs: i.join()
解决此错误,修改 testMain.py 脚本以包含 if __name__ == '__main__':guard:
import parallelTestModule if __name__ == '__main__': extractor = parallelTestModule.ParallelExtractor() extractor.runInParallel(numProcesses=2, numThreads=4)
此修改可确保子进程不会递归创建,从而解决了 Windows 计算机上的 RuntimeError。
以上是在 Windows 上使用多处理时,为什么我会收到'运行时错误:在当前进程完成引导阶段之前尝试启动新进程”?的详细内容。更多信息请关注PHP中文网其他相关文章!