class_docstr: Step a single env in a separate process for lock free paralellism.
class_docstr_tok: ["Step","a","single","env","in","a","separate","process","for","lock","free","paralellism","."]
docstr: Request an attribute from the environment.
  
  Note that this involves communication with the external process, so it can
  be slow.
  
  This method is only called if the attribute is not found in the dictionary
  of `ParallelPyEnvironment`'s definition.
  
  Args:
    name: Attribute to access.
  
  Returns:
    Value of the attribute.
docstr_tok: ["Request","an","attribute","from","the","environment",".","Note","that","this","involves","communication","with","the","external","process",",","so","it","can","be","slow",".","This","method","is","only","called","if","the","attribute","is","not","found","in","the","dictionary","of","`","ParallelPyEnvironment","`","'s","definition",".","Args",":","name",":","Attribute","to","access",".","Returns",":","Value","of","the","attribute","."]
code: def __getattr__(self, name: Text) -> Any:
      """Request an attribute from the environment.
  
      Note that this involves communication with the external process, so it can
      be slow.
  
      This method is only called if the attribute is not found in the dictionary
      of `ParallelPyEnvironment`'s definition.
  
      Args:
        name: Attribute to access.
  
      Returns:
        Value of the attribute.
      """
      # Private properties are always accessed on this object, not in the
      # wrapped object in another process.  This includes properties used
      # for pickling (incl. __getstate__, __setstate__, _conn, _ACCESS, _receive),
      # as well as private properties and methods created and used by subclasses
      # of this class.  Allowing arbitrary private attributes to be requested
      # from the other process can lead to deadlocks.
      if name.startswith("_"):
          return super(ProcessPyEnvironment, self).__getattribute__(
              name
          )
  
      # All other requests get sent to the worker.
      self._conn.send((self._ACCESS, name))
      return self._receive()
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import atexit
  import sys
  import traceback
  from typing import Any, Callable, Sequence, Text, Union
  from absl import logging
  import cloudpickle
  import gin
  import numpy
  import tensorflow
  from tf_agents.environments import py_environment
  from tf_agents.system import system_multiprocessing
  from tf_agents.trajectories import time_step
  from tf_agents.typing import types
  from tf_agents.utils import nest_utils
label_desc: Use image node_id 7 for calling the ProcessPyEnvironment obj's underlying member method code with example usage: obj.__getattr__(name) and returns: self, super