class_docstr: A class which is responsible for
  stepping the environment with epsilon-greedy,
  and fill the results to experience replay buffer.
class_docstr_tok: ["A","class","which","is","responsible","for","stepping","the","environment","with","epsilon-greedy",",","and","fill","the","results","to","experience","replay","buffer","."]
docstr: Get the recent state (with stacked history) of the environment.
  
  Returns:
      a list of ``hist_len-1`` elements, each of shape ``self.state_shape``
code: def recent_state(self):
      """
      Get the recent state (with stacked history) of the environment.
  
      Returns:
          a list of ``hist_len-1`` elements, each of shape ``self.state_shape``
      """
      expected_len = self.history_len - 1
      if len(self._current_episode) >= expected_len:
          return [
              k.state for k in self._current_episode[-expected_len:]
          ]
      else:
          states = [np.zeros(self.state_shape, dtype=self.dtype)] * (
              expected_len - len(self._current_episode)
          )
          states.extend([k.state for k in self._current_episode])
          return states
  
imports: import copy
  import itertools
  import numpy
  import threading
  from collections import namedtuple
  from six.moves import queue, range
  from tensorpack.utils.concurrency import LoopThread, ShareSessionThread
  from tensorpack.callbacks.base import Callback
  from tensorpack.dataflow import DataFlow
  from tensorpack.utils import logger, get_rng, get_tqdm
  from tensorpack.utils.stats import StatCounter
label_desc: Use image node_id 3 for calling the EnvRunner obj's underlying member method code with example usage: obj.recent_state() and returns: unknown, states