text: import cProfile
  from io import StringIO
  import pstats
  import contextlib
  
  @contextlib.contextmanager
  def profiled():
      pr = cProfile.Profile()
      pr.enable()
      yield
      pr.disable()
      s = StringIO()
      ps = pstats.Stats(pr, stream=s).sort_stats('cumulative')
      ps.print_stats()
      # uncomment this to see who's calling what
      # ps.print_callers()
      print(s.getvalue())
  # use as -> with profiled(): code_to_profile
  