class_docstr: Get data from file cache directly.
code: def _get_data(self, position):
      self._position = position
      if current_communicator():
          try:
              filename, index = self._order[position]
          except IndexError:
              logger.log(
                  99,
                  "_get_data() fails at worker {} retrying.".format(
                      current_communicator().rank
                  ),
              )
              sleep(0.01)
              return self._get_data(position)
      else:
          filename, index = self._order[position]
  
      if filename != self._current_filename:
          file_names_to_prefetch = None
          if self._cache_type == ".npy" and self._num_of_threads > 0:
              file_names_to_prefetch = [
                  o[0]
                  for o in self._order[
                      position
                      + self._max_length : position
                      + self._max_length
                      * self._num_of_threads : self._max_length
                  ]
              ]
  
          self._current_data = self._get_next_data(
              filename, file_names_to_prefetch
          )
          self._current_filename = filename
  
      data = [self._current_data[v][index] for v in self.variables]
  
      if self._normalize:
          new_data = []
          for d in data:
              if d.dtype == numpy.uint8:
                  d = d.astype(numpy.float32) * (1.0 / 255.0)
              elif d.dtype == numpy.uint16:
                  d = d.astype(numpy.float32) * (1.0 / 65535.0)
              new_data.append(d)
          data = new_data
      return data
  
imports: import atexit
  import csv
  import os
  import threading
  from collections import OrderedDict, deque
  from time import sleep
  import numpy
  from nnabla.config import nnabla_config
  from nnabla.logger import logger
  from nnabla.utils.communicator_util import current_communicator
  from six.moves import queue
  from .data_source import DataSource
  from .data_source_loader import FileReader, load
label_desc: Use image node_id 2 for calling the CacheDataSource obj's underlying member method code with example usage: obj._get_data(position) and returns: data, self