class_docstr: A thread safe queue for sending metrics to SageMaker.
  
  Args:
      trial_component_name (str): the ARN of the resource
      metric_name (str): the name of the metric
      metrics_client (boto_client): the boto client for SageMaker Metrics service
class_docstr_tok: ["A","thread","safe","queue","for","sending","metrics","to","SageMaker",".","Args",":","trial_component_name","(","str",")",":","the","ARN","of","the","resource","metric_name","(","str",")",":","the","name","of","the","metric","metrics_client","(","boto_client",")",":","the","boto","client","for","SageMaker","Metrics","service"]
docstr: Starts the metric thread which sends metrics to SageMaker in batches
docstr_tok: ["Starts","the","metric","thread","which","sends","metrics","to","SageMaker","in","batches"]
code: def _run(self):
      """Starts the metric thread which sends metrics to SageMaker in batches"""
  
      while not self._queue.empty() or not self._finished:
          if self._queue.empty():
              time.sleep(self._CONSUMER_SLEEP_SECONDS)
          else:
              batch = self._queue.get()
              self._send_metrics(batch)
  
imports: from __future__ import absolute_import
  import datetime
  import logging
  import os
  import time
  import threading
  import queue
  import dateutil.tz
  from sagemaker.session import Session
label_desc: Use image node_id 3 for calling the _MetricQueue obj's underlying member method code with example usage: obj._run() without return types