code: def __init__(
      self,
      multi_gpu_learner_thread: MultiGPULearnerThread,
      share_stats: bool,
  ):
      threading.Thread.__init__(self)
      self.multi_gpu_learner_thread = multi_gpu_learner_thread
      self.daemon = True
      if share_stats:
          self.queue_timer = multi_gpu_learner_thread.queue_timer
          self.load_timer = multi_gpu_learner_thread.load_timer
      else:
          self.queue_timer = _Timer()
          self.load_timer = _Timer()
  
imports: import logging
  import queue
  import threading
  from ray.util.timer import _Timer
  from ray.rllib.execution.learner_thread import LearnerThread
  from ray.rllib.execution.minibatch_buffer import MinibatchBuffer
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.utils.annotations import override
  from ray.rllib.utils.deprecation import deprecation_warning
  from ray.rllib.utils.framework import try_import_tf
  from ray.rllib.utils.metrics.learner_info import LearnerInfoBuilder
  from ray.rllib.evaluation.rollout_worker import RolloutWorker
label_desc: Use image node_id 1 to create a new _MultiGPULoaderThread object from inherited base classes: threading with example: obj = _MultiGPULoaderThread(multi_gpu_learner_thread, share_stats)