code: def worker(remote, parent_remote, env_fn_wrapper):
      parent_remote.close()
      env = env_fn_wrapper.x()
      while True:
          cmd, data = remote.recv()
          if cmd == "step":
              ob, reward, done, info = env.step(data)
              if done:
                  ob = env.reset()
              remote.send((ob, reward, done, info))
          elif cmd == "reset":
              ob = env.reset()
              remote.send(ob)
          elif cmd == "render":
              remote.send(env.render(mode="rgb_array"))
          elif cmd == "close":
              remote.close()
              break
          elif cmd == "get_spaces":
              remote.send((env.observation_space, env.action_space))
          elif cmd == "seed":
              val = env.seed(data)
              remote.send(val)
          else:
              raise NotImplementedError
  
file_path: keras-rl/rl/common/vec_env/subproc_env_vec.py
imports: import numpy
  from multiprocessing import Process, Pipe
  from rl.common.vec_env import VecEnv, CloudpickleWrapper
  from rl.common.tile_images import tile_images
label_desc: Use image node_id 1 for calling a global function with example usage: worker(remote, parent_remote, env_fn_wrapper) without return types