code: def multi_distdataloader_test(g, dataloader_class):
      total_num_items = (
          g.num_nodes(g.ntypes[-1])
          if "Node" in dataloader_class.__name__
          else g.num_edges(g.etypes[-1])
      )
  
      num_dataloaders = 4
      batch_size = 32
      sampler = dgl.dataloading.NeighborSampler([-1])
      dataloaders = []
      dl_iters = []
  
      # We sample only a subset to minimize the test runtime
      num_items_to_sample = int(total_num_items * 0.05)
      # To make sure that drop_last is tested
      if num_items_to_sample % batch_size == 0:
          num_items_to_sample -= 1
  
      if len(g.ntypes) == 1:
          train_ids = F.arange(0, num_items_to_sample)
      else:
          train_ids = {
              g.ntypes[-1]
              if "Node" in dataloader_class.__name__
              else g.etypes[-1]: F.arange(0, num_items_to_sample)
          }
  
      for _ in range(num_dataloaders):
          dataloader = dataloader_class(
              g, train_ids, sampler, batch_size=batch_size
          )
          dataloaders.append(dataloader)
          dl_iters.append(iter(dataloader))
  
      # iterate on multiple dataloaders randomly
      while len(dl_iters) > 0:
          current_dl = np.random.choice(len(dl_iters), 1)[0]
          try:
              _ = next(dl_iters[current_dl])
          except StopIteration:
              dl_iters.pop(current_dl)
              del dataloaders[current_dl]
  
imports: import json
  import os
  from itertools import product
  import dgl
  import dgl.backend
  import numpy
  from dgl.distributed import edge_split, load_partition_book, node_split
label_desc: Use image node_id 25 for calling a global function with example usage: multi_distdataloader_test(g, dataloader_class) without return types