我正在研究A3C/ACER的一个变体,我有多个工作线程,每个线程独立运行。我使用的是OpenAI gym环境。
Python的线程处理功能正常,但无法充分利用所有核心。由于没有阻塞I/O,它不会进行上下文切换。
我希望工作线程在各自的环境中执行动作时能够释放GIL(全局解释器锁)。
我很期待您的反馈:这是否合理并且可行?
回答:
回答我自己的问题:我发现OpenAI的universe-starter-agent展示了一种相当高效的方法:https://github.com/openai/universe-starter-agent。
该实现使用Tensorflow,并运行包括参数服务器在内的独立进程。
我认为这对其他人也可能是一个有用的参考。