class_docstr: Customized worker pool
class_docstr_tok: ["Customized","worker","pool"]
docstr: Close worker pool
docstr_tok: ["Close","worker","pool"]
code: def close(self):
      """Close worker pool"""
      for i in range(self.num_workers):
          self.task_queues[i].put(
              (MpCommand.FINALIZE_POOL, tuple()), block=False
          )
          time.sleep(0.5)
  
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 8 for calling the CustomPool obj's underlying member method code with example usage: obj.close() without return types