PyTorch出现:RuntimeError: An attempt has been made to start a new process...报错 (已解决)

PyTorch出现:RuntimeError: An attempt has been made to start a new process...报错 (已解决)

 

最近从新调试一段pytorch 代码,以前的服务器上完全没问题,但换了一台机器,重新安装了新版本的 cuda,anaconda,pytorch 等,以前的代码出现各种版本不适合的问题。一天下来,解决了 n 个问题。

问题:

现在说说这个问题。运行 pytorch 时出现的情况如下:

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.

原因:

网上查找结果,原因是多进程的原因。具体可参考博文:Python 中的 if __name__ == '__main__' 该如何理解

 

解决方法:

既然是多线程的原因,那么可以从两个角度解决问题:

1. 代码在运行 epoch 之前,加上    if __name__=='__main__'

试过,有效,一次通过。

2. 不使用多线程,即去掉 num_workers 参数,或设置 num_workers=0。

(目前还没试过,因为我还是想用多线程。)

 

 

  • 25
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值