def __init__(self, env,
                 eval_id,
                 fetch_parameter,
                 session_config,
                 separate_plots=False):
        """
        Display "reward" and "step_per_s" curves on Tensorboard

        Args:
            env:
            eval_id:
            fetch_parameter: lambda function that pulls from parameter server
            session_config: to construct AgentTensorplex
            - interval: log to Tensorplex every N episodes.
            - average_episodes: average rewards/speed over the last N episodes
            separate_plots: True to put reward plot in a separate section on
                Tensorboard, False to put all plots together
        """
        super().__init__(env)
        self.tensorplex = get_tensorplex_client(
            '{}/{}'.format('eval', eval_id),
            session_config
        )
        interval = session_config['tensorplex']['update_schedule']['eval_env']
        self._periodic = PeriodicTracker(interval)
        self._avg = interval
        self._separate_plots = separate_plots
        self._throttle_sleep = \
            session_config['tensorplex']['update_schedule']['eval_env_sleep']
        self._fetch_parameter = fetch_parameter
        self._fetch_parameter()  # if this eval is late to the party

        Display "reward" and "step_per_s" curves on Tensorboard

        Args:
            env:
            eval_id:
            fetch_parameter: lambda function that pulls from parameter server
            session_config: to construct AgentTensorplex
            - interval: log to Tensorplex every N episodes.
            - average_episodes: average rewards/speed over the last N episodes
            separate_plots: True to put reward plot in a separate section on
                Tensorboard, False to put all plots together
        
surreal/env/monitor.py