未验证 提交 4b6e6a7d 编写于 作者: R Robin Chen 提交者: GitHub

fix(crb): add unpickling error catch for sync env manager (#134)

* update base env manager and test

* add test reset once

* update subprecess env manager and test

* format code

* update picking error

* add unpickle catch for sync
上级 e8e1d09d
......@@ -789,7 +789,17 @@ class SyncSubprocessEnvManager(AsyncSubprocessEnvManager):
# === Because operate in this way is more efficient. ===
timesteps = {}
ready_conn = [self._pipe_parents[env_id] for env_id in env_ids]
timesteps.update({env_id: p.recv() for env_id, p in zip(env_ids, ready_conn)})
# timesteps.update({env_id: p.recv() for env_id, p in zip(env_ids, ready_conn)})
for env_id, p in zip(env_ids, ready_conn):
try:
timesteps.update({env_id: p.recv()})
except pickle.UnpicklingError as e:
timestep = BaseEnvTimestep(None, None, None, {'abnormal': True})
timesteps.update({env_id: timestep})
self._pipe_parents[env_id].close()
if self._subprocesses[env_id].is_alive():
self._subprocesses[env_id].terminate()
self._create_env_subprocess(env_id)
self._check_data(timesteps)
# ======================================================
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册