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

Mary-Kate Olsen
发布: 2024-11-21 06:26:10
原创
546 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板