code: def __init__(
      self,
      band: BandType,
      n_slots: int,
      global_resource_ref: mo.ActorRef = None,
  ):
      super().__init__()
      self._cluster_api = None
  
      self._band = band
      self._band_name = band[1]
      self._global_resource_ref = global_resource_ref
      self._n_slots = n_slots
  
      self._semaphore = asyncio.Semaphore(0)
      self._slot_control_refs = dict()
      self._free_slots = set()
      self._fresh_slots = set()
      self._slot_kill_events = dict()
  
      self._restarting = False
      self._restart_done_event = asyncio.Event()
  
      self._session_stid_to_slot = dict()
      self._slot_to_session_stid = dict()
      self._last_report_time = time.time()
  
      self._slot_to_proc = dict()
      self._usage_upload_task = None
  
imports: import asyncio
  import logging
  import os
  import time
  from typing import Dict, List, NamedTuple, Set, Tuple
  import psutil
  from ....None import oscar
  from ....oscar.errors import NoFreeSlot, SlotStateError
  from ....oscar.backends.allocate_strategy import IdleLabel
  from ....resource import Resource
  from ....typing import BandType
  from ...cluster import WorkerSlotInfo, ClusterAPI
label_desc: Use image node_id 2 to create a new BandSlotManagerActor object from inherited base classes: mo with example: obj = BandSlotManagerActor(band, n_slots, global_resource_ref)