def METHOD_NAME(self):
    """batch dict generator"""
    def worker(filter_id, perm):
        """ multiprocess worker"""
        def func_run():
            """ func_run """
            pid = os.getpid()
            np.random.seed(pid + int(time.time()))
            for batch_examples in self.batch_iter(filter_id, perm):
                try:
                    batch_dict = self.batch_fn(batch_examples)
                except Exception as e:
                    traceback.print_exc()
                    continue
                if batch_dict is None:
                    continue
                yield batch_dict
        return func_run
    # consume a seed
    np.random.rand()
    if self.shuffle:
        perm = np.arange(0, len(self))
        np.random.shuffle(perm)
    else:
        perm = None
    if self.num_workers == 1:
        r = paddle.reader.buffered(worker(0, perm), self.buf_size)
    else:
        worker_pool = [
            worker(wid, perm) for wid in range(self.num_workers)
        ]
        worker = mp_reader.multiprocess_reader(
            worker_pool, use_pipe=True, queue_size=1000)
        r = paddle.reader.buffered(worker, self.buf_size)
    for batch in r():
        yield batch