class_docstr: This class is used to receive logging messages sent from worker processes that
  are running in different PROCESSES (not threads).
  
  The logging will work when using threads. However, when using processes (multiprocessing.Process) :class:`multiprocessing.Process`
  , the present class
  is needed in the main process to receive the logging messages from the worker processes properly in the main console output.
class_docstr_tok: ["This","class","is","used","to","receive","logging","messages","sent","from","worker","processes","that","are","running","in","different","PROCESSES","(","not","threads",")",".","The","logging","will","work","when","using","threads",".","However",",","when","using","processes","(","multiprocessing.Process",")",":","class",":","`","multiprocessing.Process","`",",","the","present","class","is","needed","in","the","main","process","to","receive","the","logging","messages","from","the","worker","processes","properly","in","the","main","console","output","."]
docstr: Start the thread to read the logs from the queue.
docstr_tok: ["Start","the","thread","to","read","the","logs","from","the","queue","."]
code: def start(self):
      """
      Start the thread to read the logs from the queue.
      """
      _logging_thread = Thread(
          target=self.logger_consumer_thread_func,
          args=(self.logging_queue,),
      )
      _logging_thread.daemon = True
      _logging_thread.start()
      self.logging_thread = _logging_thread
  
imports: import logging
  import re
  import sys
  from threading import Thread
  from io import StringIO
  from multiprocessing import Queue
  from typing import IO, Dict, List, Optional
label_desc: Use image node_id 2 for calling the ParallelLoggingConsumerThread obj's underlying member method code with example usage: obj.start() without return types