class_docstr: SimpleDataSource
  
  Get data from user defined function.
code: def __init__(self, load_func, num_examples, shuffle=False, rng=None):
      super(SimpleDataSource, self).__init__(shuffle=shuffle, rng=rng)
      self._load_func = load_func
      self._size = num_examples
      self._generation = 0
      self._variables = [
          "x" + str(x) for x in range(len(self._load_func(0)))
      ]
      # We set maximal asynchronized generations.
      self._orders = deque(maxlen=15)
      self.reset()
      self._generate_order(0)
  
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 6 to create a new SimpleDataSource object from inherited base classes: DataSource with example: obj = SimpleDataSource(load_func, num_examples, shuffle, rng)