为什么这个多处理代码失败?

这个问题在这里已经有了答案:

  • 为什么在Windows上启动新进程时,Python的多处理模块会导入__main__? 1个答案

  • 当您创建新的子进程时,子进程可能(主要取决于您正在使用的操作系统)重新导入当前模块。

    在你的情况下,重新导入模块也执行这两行:

    Process(target=sample).start()
    Process(target=sample).start()
    

    会发生什么,错误消息告诉你什么:

    在当前进程完成引导阶段之前,已尝试开始一个新进程。 这可能意味着你没有使用fork来启动你的子进程,并且你忘记了在主模块中使用正确的方式

    为第一个子进程设置适当的环境时,代码尝试分离出另一个子进程。 经理检测到这一点,并告诉你这是不好的。

    if __name__ == '__main__':
        Process(target=sample).start()
        Process(target=sample).start()
    

    是一个警戒条件,它允许当前模块被导入到子模块中而没有这个问题,因为只有--well--主模块的名字是__main__

    链接地址: http://www.djcxy.com/p/54793.html

    上一篇: Why does this multiprocessing code fail?

    下一篇: super(type, object