class_docstr: Base Data Geneartor
class_docstr_tok: ["Base","Data","Geneartor"]
docstr: batch iterator
docstr_tok: ["batch","iterator"]
code: def batch_iter(self, fid, perm):
      """batch iterator"""
      if self.shuffle:
          for batch in batch_iter(
              self, perm, self.batch_size, fid, self.num_workers
          ):
              yield batch
      else:
          for batch in scan_batch_iter(
              self, self.batch_size, fid, self.num_workers
          ):
              yield batch
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  from __future__ import absolute_import
  import os
  import sys
  import six
  from io import open
  from collections import namedtuple
  import numpy
  import tqdm
  import paddle
  from pgl.utils import mp_reader
  import collections
  import time
  import traceback
label_desc: Use image node_id 3 for calling the BaseDataGenerator obj's underlying member method code with example usage: obj.batch_iter(fid, perm) without return types