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: Adds a metric data point to the queue
docstr_tok: ["Adds","a","metric","data","point","to","the","queue"]
code: def log_metric(self, metric_data):
      """Adds a metric data point to the queue"""
      self._buffer.append(metric_data)
  
      if len(self._buffer) < BATCH_SIZE:
          return
  
      self._enqueue_all()
  
      if not self._started:
          self._thread.start()
          self._started = True
  
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 2 for calling the _MetricQueue obj's underlying member method code with example usage: obj.log_metric(metric_data) without return types