code: def __init__(
      self, period: float = 10, attribute_namespace: str = "monitoring"
  ):
      self._period = period
      self._thread = None
      self._started = False
      self._gauges_in_resource: Dict[str, int] = dict()
      self._attribute_namespace = attribute_namespace
  
imports: import logging
  import os
  import time
  from itertools import groupby
  from typing import TYPE_CHECKING, Dict, Optional
  from neptune.common.hardware.gauges.gauge_factory import GaugeFactory
  from neptune.common.hardware.gauges.gauge_mode import GaugeMode
  from neptune.common.hardware.metrics.metrics_factory import MetricsFactory
  from neptune.common.hardware.metrics.reports.metric_reporter import MetricReporter
  from neptune.common.hardware.metrics.reports.metric_reporter_factory import MetricReporterFactory
  from neptune.common.hardware.resources.system_resource_info_factory import SystemResourceInfoFactory
  from neptune.common.hardware.system.system_monitor import SystemMonitor
  from neptune.common.utils import in_docker
  from neptune.internal.background_job import BackgroundJob
  from neptune.internal.hardware.gpu.gpu_monitor import GPUMonitor
  from neptune.internal.threading.daemon import Daemon
  from neptune.types.series import FloatSeries
label_desc: Use image node_id 1 to create a new HardwareMetricReportingJob object from inherited base classes: BackgroundJob with example: obj = HardwareMetricReportingJob(period, attribute_namespace)