code: def stop(self):
      if not self._started:
          return
  
      self._shutdown = True
      self._th_collector.join()
      if self._capture_logs:
          # read and store remaining buffered logs
          self._store_buffered_logs()
          # unregister the buffer
          del self._buffer_registry[id(self)]
          # uninstall stream patching if no buffer is left in the registry
          if not self._buffer_registry:
              self._uninstall_stream_patches()
  
imports: import io
  import logging
  import re
  import sys
  import time
  import weakref
  from psutil import Process, cpu_percent
  from threading import Thread
  from typing import Union
  from weakref import WeakValueDictionary
  from aim.ext.resource.configs import AIM_RESOURCE_METRIC_PREFIX
  from aim.ext.resource.log import LogLine
  from aim.ext.resource.stat import Stat
label_desc: Use image node_id 7 for calling the ResourceTracker obj's underlying member method code with example usage: obj.stop() without return types