class_docstr: MemoryProfiler, which is implemented based on memory profiler and Accumulator
class_docstr_tok: ["MemoryProfiler",",","which","is","implemented","based","on","memory","profiler","and","Accumulator"]
docstr: Print the profile stats to stdout, id is the PythonUDF id
docstr_tok: ["Print","the","profile","stats","to","stdout",",","id","is","the","PythonUDF","id"]
code: def show(self, id: int) -> None:
      """Print the profile stats to stdout, id is the PythonUDF id"""
      code_map = self.stats()
      if code_map:
          print("=" * 60)
          print("Profile of UDF<id=%d>" % id)
          print("=" * 60)
          self._show_results(code_map)
  
imports: from typing import Any, Callable, Dict, List, Optional, Tuple, Type, TYPE_CHECKING, Union, cast
  import cProfile
  import inspect
  import pstats
  import linecache
  import os
  import atexit
  import sys
  import warnings
  from pyspark.accumulators import AccumulatorParam
  from pyspark.errors import PySparkRuntimeError
label_desc: Use image node_id 5 for calling the MemoryProfiler obj's underlying member method code with example usage: obj.show(id) without return types