Python子进程执行慢于主进程的问题排查与解决咨询
问题:多进程中Gym环境step方法执行速度慢于主进程
单进程测试代码
import gym def run(): env = gym.make('Pendulum-v1') env.reset() action = [1.0] for _ in range(1000): env.step(action)
性能分析结果
使用viztracer分别在主进程和multiprocessing.Process创建的子进程中对上述run()方法做性能分析,结果显示:子进程中单个step()方法的执行速度明显慢于主进程,其中numpy.ndarray.clip方法的耗时差异尤为突出:
- 子进程中
step方法执行时间:
- 主进程中
step方法执行时间:
- 子进程中
numpy.ndarray.clip方法执行时间:
- 主进程中
numpy.ndarray.clip方法执行时间:
运行环境
- Python版本:3.8.11(gym版本:0.26.2)
- 操作系统:Ubuntu 20.04.5 LTS
- CPU:2 * XEON GOLD 6230
- 其他测试硬件:Intel i7 9750H、i9 12900H(均存在相同问题)
多进程基准测试代码
import gym from multiprocessing import Process def run(): env = gym.make('Pendulum-v1') env.reset() action = [1,0] for _ in range(1000): env.step(action) if __name__ == "__main__": p = Process(target=run) p.start() p.join() p.close()
咨询问题
- 导致该问题的原因是什么?
- 如何解决该问题?
内容的提问来源于stack exchange,提问作者dachougui
相关产品推荐
相关产品推荐

