class_docstr: This is a queue based run data processor that queues incoming batches and processes them using
  single worker thread.
docstr: Initializes an AsyncLoggingQueue object.
  
  Args:
      logging_func: A callable function that takes in four arguments: a string
          representing the run_id, a list of Metric objects,
          a list of Param objects, and a list of RunTag objects.
docstr_tok: ["Initializes","an","AsyncLoggingQueue","object",".","Args",":","logging_func",":","A","callable","function","that","takes","in","four","arguments",":","a","string","representing","the","run_id",",","a","list","of","Metric","objects",",","a","list","of","Param","objects",",","and","a","list","of","RunTag","objects","."]
code: def __init__(
      self, logging_func: callable([str, [Metric], [Param], [RunTag]])
  ) -> None:
      """Initializes an AsyncLoggingQueue object.
  
      Args:
          logging_func: A callable function that takes in four arguments: a string
              representing the run_id, a list of Metric objects,
              a list of Param objects, and a list of RunTag objects.
      """
      self._queue = Queue()
      self._lock = threading.RLock()
      self._logging_func = logging_func
  
      self._stop_data_logging_thread_event = threading.Event()
      self._is_activated = False
  
imports: import atexit
  import logging
  import threading
  from concurrent.futures import ThreadPoolExecutor
  from queue import Empty, Queue
  from mlflow.entities.metric import Metric
  from mlflow.entities.param import Param
  from mlflow.entities.run_tag import RunTag
  from mlflow.utils.async_logging.run_batch import RunBatch
  from mlflow.utils.async_logging.run_operations import RunOperations
label_desc: Use image node_id 1 to create a new AsyncLoggingQueue object  with example: obj = AsyncLoggingQueue(logging_func)