class_docstr: Iterable DataLoader Object
      
class_docstr_tok: ["Iterable","DataLoader","Object"]
code: def _stream_shuffle_data_generator(self):
      def _stream_shuffle_index_generator():
          shuffle_size = [i for i in range(self.stream_shuffle_size)]
          while True:
              yield shuffle_size
  
      def _data_generator():
          dataset = iter(self.dataset)
          for shuffle_size in _stream_shuffle_index_generator():
              shuffle_size_data = []
              for idx in shuffle_size:
                  try:
                      shuffle_size_data.append(next(dataset))
                  except StopIteration:
                      break
  
              if len(shuffle_size_data) == 0:
                  break
  
              yield shuffle_size_data
  
      def _batch_data_generator():
          batch_data = []
          for shuffle_size_data in _data_generator():
              np.random.shuffle(shuffle_size_data)
  
              for d in shuffle_size_data:
                  batch_data.append(d)
                  if len(batch_data) == self.batch_size:
                      yield batch_data
                      batch_data = []
  
          if not self.drop_last and len(batch_data) > 0:
              yield batch_data
  
      self._worker_info = WorkerInfo(
          num_workers=self.num_workers, fid=self.fid
      )
      self.dataset._set_worker_info(self._worker_info)
  
      for batch_data in _batch_data_generator():
          if self.collate_fn is not None:
              yield self.collate_fn(batch_data)
          else:
              yield batch_data
  
imports: import warnings
  import time
  import numpy
  from collections import namedtuple
  import paddle
  import paddle.fluid
  import paddle.fluid.layers
  from pgl.utils import mp_reader
  from pgl.utils.data.dataset import Dataset, StreamDataset
  from pgl.utils.data.sampler import Sampler, StreamSampler
label_desc: Use image node_id 4 for calling the _DataLoaderIter obj's underlying member method code with example usage: obj._stream_shuffle_data_generator() without return types