code: def run(self):
      try:
          while self.should_continue_running():
              before = time.time()
  
              try:
                  self.__metric_service.report_and_send(
                      timestamp=time.time()
                  )
              except (NeptuneException, HTTPError):
                  _logger.exception(
                      "Unexpected HTTP error in hardware metric reporting thread."
                  )
  
              reporting_duration = time.time() - before
  
              time.sleep(
                  max(
                      0,
                      self.__metric_sending_interval_seconds
                      - reporting_duration,
                  )
              )
      except Exception as e:
          _logger.debug(
              "Unexpected error in hardware metric reporting thread: %s",
              e,
          )
  
file_path: neptune-client/src/neptune/legacy/internal/threads/hardware_metric_reporting_thread.py
imports: import logging
  import time
  from bravado.exception import HTTPError
  from neptune.legacy.exceptions import NeptuneException
  from neptune.legacy.internal.threads.neptune_thread import NeptuneThread
label_desc: Use image node_id 2 for calling the HardwareMetricReportingThread obj's underlying member method code with example usage: obj.run() without return types