在 A2C 算法中,多个环境在不同的进程中运行,以实现并行计算。在 openai 基线实现中,SubprocVecEnv是为不同环境创建不同进程的类。(您可以在stable_baselines中看到几乎相同的实现)。
我不明白的一点是:为什么进程的参数是一个返回调用环境的函数,env_fn
而不是直接调用环境本身env
?
换句话说,为什么 L61 是这样的,而不是这样的:
self.ps = [ctx.Process(target=worker, args=(work_remote, remote, CloudpickleWrapper(env)))
谢谢!