class_docstr: Profile reader to read paddle profile files, support for frontend api in lib.py.
      
class_docstr_tok: ["Profile","reader","to","read","paddle","profile","files",",","support","for","frontend","api","in","lib.py","."]
docstr: Instance of ProfileReader
  
  Args:
      logdir: The dir include paddle profile files, multiple subfolders allowed.
docstr_tok: ["Instance","of","ProfileReader","Args",":","logdir",":","The","dir","include","paddle","profile","files",",","multiple","subfolders","allowed","."]
code: def __init__(self, logdir=""):
      """Instance of ProfileReader
  
      Args:
          logdir: The dir include paddle profile files, multiple subfolders allowed.
      """
      if isinstance(logdir, str):
          self.dir = [logdir]
      else:
          self.dir = logdir
  
      self.walks = {}
      self.displayname2runs = {}
      self.runs2displayname = {}
      self.run_managers = {}
      self.profile_result_queue = Queue()
      self.tempfile = None
      if logdir:
          self.runs()
          Thread(target=self._get_data_from_queue, args=()).start()
  
imports: import os
  import re
  from multiprocessing import Process
  from multiprocessing import Queue
  from threading import Lock
  from threading import Thread
  import packaging.version
  from .parser.const_description import *
  from .parser.event_node import load_profiler_json
  from .parser.event_node import ProfilerResult
  from .parser.utils import RedirectStdStreams
  from .run_manager import RunManager
  from visualdl.io import bfile
label_desc: Use image node_id 1 to create a new ProfilerReader object from inherited base classes: object with example: obj = ProfilerReader(logdir)