class_docstr: Iterable DataLoader Object
      
code: def _streamdata_generator(self):
      self._worker_info = WorkerInfo(
          num_workers=self.num_workers, fid=self.fid
      )
      self.dataset._set_worker_info(self._worker_info)
  
      dataset = iter(self.dataset)
      for indices in self.sampler:
          batch_data = []
          for _ in indices:
              try:
                  batch_data.append(next(dataset))
              except StopIteration:
                  break
  
          if len(batch_data) == 0 or (
              self.drop_last and len(batch_data) < len(indices)
          ):
              break
              #  raise StopIteration
  
          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
  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 3 for calling the _DataLoaderIter obj's underlying member method code with example usage: obj._streamdata_generator() without return types