docstr: Args:
      batch_size: int
  
      node_type: string
  
      shuffle: bool
  
      rank: int
  
      nrank: int
docstr_tok: ["Args",":","batch_size",":","int","node_type",":","string","shuffle",":","bool","rank",":","int","nrank",":","int"]
code: def node_batch_iter(
      self, batch_size, node_type, shuffle=True, rank=0, nrank=1
  ):
      """
      Args:
          batch_size: int
  
          node_type: string
  
          shuffle: bool
  
          rank: int
  
          nrank: int
      """
  
      node_iter = partial(
          self._node_batch_iter_from_server,
          batch_size=batch_size,
          node_type=node_type,
          rank=rank,
          nrank=nrank,
      )
  
      server_idx_list = list(range(self.server_num))
      np.random.shuffle(server_idx_list)
      for server_idx in server_idx_list:
          if shuffle:
              for nodes in stream_shuffle_generator(
                  node_iter,
                  server_idx,
                  batch_size,
                  self.stream_shuffle_size,
              ):
                  yield nodes
          else:
              for nodes in node_iter(server_idx):
                  yield nodes
  
imports: import os
  import sys
  import time
  import argparse
  import warnings
  import numpy
  from functools import partial
  from paddle.framework import core
  from pgl.utils.logger import log
  from pgl.distributed import helper
label_desc: Use image node_id 8 for calling the DistGraphClient obj's underlying member method code with example usage: obj.node_batch_iter(batch_size, node_type, shuffle, rank, nrank) without return types