首页 >后端开发 >Python教程 >在 Windows 上使用多处理时,为什么我会收到'运行时错误:在当前进程完成引导阶段之前尝试启动新进程”?

在 Windows 上使用多处理时,为什么我会收到'运行时错误:在当前进程完成引导阶段之前尝试启动新进程”?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-21 06:26:10609浏览

Why am I getting

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn