mmsegmentation修仙之路-bug篇(2)

合集目录
  1. mmsegmentation修仙之路-bug篇(1)
  2. mmsegmentation修仙之路-bug篇(2)
  3. mmsegmentation修仙之路-bug篇(3)

随着mmcv2.0版本的发布,现在越来越多的算法库已经替换成2.0架构,其基础是mmengine。整个流程有很大的变动,整个流程更清晰明了,智能简单,因此之前很多涉及流程的报错也不会再出现。

RuntimeError: An attempt has been made to start a new process before the current process has finished its bootstrapping phase.

 File "D:\ProgramData\Anaconda3\envs\openmmlab\lib\multiprocessing\spawn.py", line 134, in _check_not_importing_main
    raise RuntimeError('''
RuntimeError: 
        An attempt has been made to start a new process before the
        current process has finished its bootstrapping phase.

        This probably means that you are not using fork to start your
        child processes 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 an executable.

报错原因:
pytorch在Linux中和windows/MacOS中支持多线程的是存在差异的,Linux中,子线程是直接通过克隆地址来获取dataset和python函数参数的。在window下,python解释器运行后,如果没有指定主入口,python会按顺序执行代码,此时新创建进程后,子进程会再次导入运行的文件并按顺序全部执行代码,多进程代码会再次被执行,但multiprocessing.Process的源码中是对子进程再次产生子进程是做了限制的,是不允许的,所以会报错提示。

解决办法:
1、在主程序加入if __name__ == '__main__': ,指定程序入口,此时主程序的命名空间为‘__main__’,继续使用多线程加载
2、设置num_workers=0并且,persistent_workers=Fal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值