docstr: handles the sampling of a dataset containing multiple domains
  
  Args:
      split (string, optional): ["train"|"valid"|"test"]. Which dataset to iterate on. Defaults to "train".
      batch_size (int, optional): Defaults to 32.
  
  Returns:
      MultiDataLoader: A dataloader with API similar to the torch.dataloader, but returning
      batches from several domains at each iteration.
code: def get_domain_loaders(self, split="train", batch_size=32):
      """
      handles the sampling of a dataset containing multiple domains
  
      Args:
          split (string, optional): ["train"|"valid"|"test"]. Which dataset to iterate on. Defaults to "train".
          batch_size (int, optional): Defaults to 32.
  
      Returns:
          MultiDataLoader: A dataloader with API similar to the torch.dataloader, but returning
          batches from several domains at each iteration.
      """
      raise NotImplementedError()
  
imports: import logging
  import os
  from enum import Enum
  from typing import Any, Callable, cast, Dict, List, Optional, Tuple
  import numpy
  import torch.utils.data
  from sklearn.utils import check_random_state
  from torchvision.datasets import VisionDataset
  from torchvision.datasets.folder import default_loader, has_file_allowed_extension, IMG_EXTENSIONS
  from kale.loaddata.dataset_access import DatasetAccess, get_class_subset, split_by_ratios
  from kale.loaddata.sampler import FixedSeedSamplingConfig, get_labels, MultiDataLoader, SamplingConfig
label_desc: Use image node_id 2 for calling the DomainsDatasetBase obj's underlying member method code with example usage: obj.get_domain_loaders(split, batch_size) without return types