class_docstr: Customized worker pool
class_docstr_tok: ["Customized","worker","pool"]
docstr: Submit task to workers
docstr_tok: ["Submit","task","to","workers"]
code: def submit_task(self, dataloader_name, args):
      """Submit task to workers"""
      # Round robin
      self.task_queues[self.current_proc_id].put(
          (MpCommand.CALL_COLLATE_FN, (dataloader_name, args))
      )
      self.current_proc_id = (
          self.current_proc_id + 1
      ) % self.num_workers
  
imports: import atexit
  import gc
  import multiprocessing
  import os
  import queue
  import sys
  import time
  import traceback
  from enum import Enum
  from ..None import utils
  from ..base import dgl_warning, DGLError
  from .None import rpc
  from .constants import MAX_QUEUE_SIZE
  from .kvstore import close_kvstore, init_kvstore
  from .role import init_role
  from .rpc_client import connect_to_server
label_desc: Use image node_id 3 for calling the CustomPool obj's underlying member method code with example usage: obj.submit_task(dataloader_name, args) without return types