Python多进程启动触发RuntimeError:进程引导阶段未完成报错求助
解决Python多进程RuntimeError的方案
问题根源
这是Windows系统下用Python写多进程代码时特别常见的坑!因为Windows不像Linux用fork方式创建子进程,它用的是spawn——启动子进程时会重新加载整个主模块代码。如果你的进程创建逻辑没做保护,子进程启动后会再次执行创建进程的代码,直接陷入无限递归,最终就触发了这个RuntimeError。
修复后的代码
只需要把创建和启动进程的逻辑放到if __name__ == '__main__':代码块里就行,修改后的完整代码如下:
import time import multiprocessing def mydef(arg): time.sleep(arg) print("Slept for 1 Sec") # 顺便帮你修正了拼写错误~ if __name__ == '__main__': pro = [] for _ in range(15): p = multiprocessing.Process(target=mydef, args=[1]) p.start() pro.append(p) for proo in pro: proo.join()
为什么这样能解决问题?
- 当你直接运行这个脚本时,主模块的
__name__值是'__main__',这时候会执行if块里创建进程的逻辑。 - 子进程启动时会重新导入主模块,这时
__name__的值是模块名(不是'__main__'),所以if块里的代码不会被执行,完美避免了子进程重复创建进程的恶性循环。
另外错误提示里提到的freeze_support(),如果你不需要把程序打包成可执行文件(比如用PyInstaller),完全不用加,上面的代码已经足够解决问题啦。
内容的提问来源于stack exchange,提问作者Tanay Mishra
相关产品推荐
相关产品推荐

