class_docstr: VectorEnv where each env is run in its own subprocess.
  
  Args:
      env_fns (list of callable): List of callables, each of which
          returns gym.Env that is run in its own subprocess.
class_docstr_tok: ["VectorEnv","where","each","env","is","run","in","its","own","subprocess",".","Args",":","env_fns","(","list","of","callable",")",":","List","of","callables",",","each","of","which","returns","gym.Env","that","is","run","in","its","own","subprocess","."]
code: def step(self, actions):
      self._assert_not_closed()
      for remote, action in zip(self.remotes, actions):
          remote.send(("step", action))
      results = [remote.recv() for remote in self.remotes]
      self.last_obs, rews, dones, infos = zip(*results)
      return self.last_obs, rews, dones, infos
  
file_path: pfrl/pfrl/envs/multiprocess_vector_env.py
imports: import signal
  import warnings
  from multiprocessing import Pipe, Process
  import numpy
  from torch.distributions.utils import lazy_property
  import pfrl
label_desc: Use image node_id 4 for calling the MultiprocessVectorEnv obj's underlying member method code with example usage: obj.step(actions) and returns: self,  rews,  dones,  infos