class_docstr: A base class for creating distributed data loading routines.
  
  Args:
      current_ctx (DistContext): Distributed context info of the current
          process.
      master_addr (str, optional): RPC address for distributed loader
          communication.
          Refers to the IP address of the master node. (default: :obj:`None`)
      master_port (int or str, optional): The open port for RPC communication
          with the master node. (default: :obj:`None`)
      channel (mp.Queue, optional): A communication channel for messages.
          (default: :obj:`None`)
      num_rpc_threads (int, optional): The number of threads in the
          thread-pool used by
          :class:`~torch.distributed.rpc.TensorPipeAgent` to execute
          requests. (default: :obj:`16`)
      rpc_timeout (int, optional): The default timeout in seconds for RPC
          requests.
          If the RPC has not completed in this timeframe, an exception will
          be raised.
          Callers can override this timeout for
          individual RPCs in :meth:`~torch.distributed.rpc.rpc_sync` and
          :meth:`~torch.distributed.rpc.rpc_async` if necessary.
          (default: :obj:`180`)
class_docstr_tok: ["A","base","class","for","creating","distributed","data","loading","routines",".","Args",":","current_ctx","(","DistContext",")",":","Distributed","context","info","of","the","current","process",".","master_addr","(","str",",","optional",")",":","RPC","address","for","distributed","loader","communication",".","Refers","to","the","IP","address","of","the","master","node",".","(","default",":",":","obj",":","`","None","`",")","master_port","(","int","or","str",",","optional",")",":","The","open","port","for","RPC","communication","with","the","master","node",".","(","default",":",":","obj",":","`","None","`",")","channel","(","mp.Queue",",","optional",")",":","A","communication","channel","for","messages",".","(","default",":",":","obj",":","`","None","`",")","num_rpc_threads","(","int",",","optional",")",":","The","number","of","threads","in","the","thread-pool","used","by",":","class",":","`","~torch.distributed.rpc.TensorPipeAgent","`","to","execute","requests",".","(","default",":",":","obj",":","`","16","`",")","rpc_timeout","(","int",",","optional",")",":","The","default","timeout","in","seconds","for","RPC","requests",".","If","the","RPC","has","not","completed","in","this","timeframe",",","an","exception","will","be","raised",".","Callers","can","override","this","timeout","for","individual","RPCs","in",":","meth",":","`","~torch.distributed.rpc.rpc_sync","`","and",":","meth",":","`","~torch.distributed.rpc.rpc_async","`","if","necessary",".","(","default",":",":","obj",":","`","180","`",")"]
code: def channel_get(self, out: Any) -> Any:
      if self.channel:
          out = self.channel.get()
          logging.debug(f"[{self}] Retrieved message")
      return out
  
file_path: pytorch_geometric/torch_geometric/distributed/dist_loader.py
imports: import atexit
  import logging
  import os
  from typing import Any, Optional, Union
  import torch.multiprocessing
  from torch_geometric.distributed import DistNeighborSampler
  from torch_geometric.distributed.dist_context import DistContext
  from torch_geometric.distributed.rpc import global_barrier, init_rpc, shutdown_rpc
  from torch_geometric.loader.base import DataLoaderIterator
label_desc: Use image node_id 2 for calling the DistLoader obj's underlying member method code with example usage: obj.channel_get(out) and returns: out