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. To fix this issue, refer to the "Safe importing of main module" section in https://docs.python.org/3/library/multiprocessing.html
解决方法
假设你有一个脚本 run_longExp.py
,它包含了数据加载和训练的代码。你需要确保类似下面的结构:
python
复制代码
def main(): setting = ...
# 设置参数 exp.train(setting) if __name__ == '__main__': main()
确保 exp.train(setting)
和所有涉及多进程的代码都在 main
函数中,并且 main
函数是在 if __name__ == '__main__':
块中调用的。
例如
def main():
源代码
if __name__ == '__main__': main()
即可