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","."]
code: def runs(self, update=True):
      self.profile_runs(update=update)
      for run, filenames in self.walks.items():
          if run not in self.run_managers:
              self.run_managers[run] = RunManager(run)
          self.run_managers[run].set_all_filenames(filenames)
          for filename in filenames:
              with (
                  _lock
              ):  # we add this to prevent parallel requests for handling a file multiple times
                  if self.run_managers[run].has_handled(filename):
                      continue
                  self.run_managers[run].handled_filenames.add(filename)
              self._read_data(run, filename)
      return list(self.walks.keys())
  
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 7 for calling the ProfilerReader obj's underlying member method code with example usage: obj.runs(update) and returns: list