为什么这个多处理代码失败?
这个问题在这里已经有了答案:
当您创建新的子进程时,子进程可能(主要取决于您正在使用的操作系统)重新导入当前模块。
在你的情况下,重新导入模块也执行这两行:
Process(target=sample).start()
Process(target=sample).start()
会发生什么,错误消息告诉你什么:
在当前进程完成引导阶段之前,已尝试开始一个新进程。 这可能意味着你没有使用fork来启动你的子进程,并且你忘记了在主模块中使用正确的方式
为第一个子进程设置适当的环境时,代码尝试分离出另一个子进程。 经理检测到这一点,并告诉你这是不好的。
if __name__ == '__main__':
Process(target=sample).start()
Process(target=sample).start()
是一个警戒条件,它允许当前模块被导入到子模块中而没有这个问题,因为只有--well--主模块的名字是__main__
。
上一篇: Why does this multiprocessing code fail?
下一篇: super(type, object