code: def stop(self):
      if self._ping_thread:
          self._ping_thread.interrupt()
          self._ping_thread = None
  
      if self._hardware_metric_thread:
          self._hardware_metric_thread.interrupt()
          self._hardware_metric_thread = None
  
      if self._aborting_thread:
          self._aborting_thread.shutdown()
          self._aborting_thread = None
  
      if self._stdout_uploader:
          self._stdout_uploader.close()
  
      if self._stderr_uploader:
          self._stderr_uploader.close()
  
      if self._logger and self._logger_handler:
          self._logger.removeHandler(self._logger_handler)
  
      sys.excepthook = self._previous_uncaught_exception_handler
  
imports: import logging
  import os
  import sys
  import time
  import traceback
  from logging import StreamHandler
  from neptune.common.hardware.gauges.gauge_mode import GaugeMode
  from neptune.common.hardware.metrics.service.metric_service_factory import MetricServiceFactory
  from neptune.common.utils import in_docker, is_ipython, is_notebook
  from neptune.legacy.internal.abort import CustomAbortImpl, DefaultAbortImpl
  from neptune.legacy.internal.channels.channels import ChannelNamespace
  from neptune.legacy.internal.streams.channel_writer import ChannelWriter
  from neptune.legacy.internal.streams.stdstream_uploader import StdErrWithUpload, StdOutWithUpload
  from neptune.legacy.internal.threads.aborting_thread import AbortingThread
  from neptune.legacy.internal.threads.hardware_metric_reporting_thread import HardwareMetricReportingThread
  from neptune.legacy.internal.threads.ping_thread import PingThread
label_desc: Use image node_id 3 for calling the ExecutionContext obj's underlying member method code with example usage: obj.stop() without return types