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__'

PyTorch出现:RuntimeError: An attempt has been made to start a new process...报错 (已解决)_第1张图片

试过,有效,一次通过。

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

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

 

 

你可能感兴趣的:(pytorch,随笔,python)