class_docstr: Object to store runtime and memory profiling information for all of
  PyTensor's operations: compilation, rewriting, execution.
  
  Parameters
  ----------
  atexit_print : bool
      True means that this object will be printed to stderr (using .summary())
      at the end of the program.
  **kwargs : misc initializers
      These should (but need not) match the names of the class vars declared
      in this class.
class_docstr_tok: ["Object","to","store","runtime","and","memory","profiling","information","for","all","of","PyTensor","'s","operations",":","compilation",",","rewriting",",","execution",".","Parameters","--","--","--","--","--","atexit_print",":","bool","True","means","that","this","object","will","be","printed","to","stderr","(","using",".summary","(",")",")","at","the","end","of","the","program",".","*","*","kwargs",":","misc","initializers","These","should","(","but","need","not",")","match","the","names","of","the","class","vars","declared","in","this","class","."]
code: def summary(
      self, file=sys.stderr, n_ops_to_print=20, n_apply_to_print=20
  ):
      self.summary_function(file)
      self.summary_globals(file)
      local_time = sum(self.apply_time.values())
      if local_time > 0:
          self.summary_class(file, n_ops_to_print)
          self.summary_ops(file, n_ops_to_print)
          self.summary_nodes(file, n_apply_to_print)
      elif self.fct_callcount > 0:
          print(
              "  No execution time accumulated "
              "(hint: try config profiling__time_thunks=1)",
              file=file,
          )
      if config.profiling__debugprint:
          fcts = {fgraph for (fgraph, n) in self.apply_time.keys()}
          pytensor.printing.debugprint(fcts, print_type=True)
      if self.variable_shape or self.variable_strides:
          self.summary_memory(file, n_apply_to_print)
      if self.rewriter_profile:
          print("Rewriter Profile", file=file)
          print("----------------", file=file)
          self.rewriter_profile[0].print_profile(
              file, self.rewriter_profile[1]
          )
      self.print_extra(file)
      self.print_tips(file)
  
imports: import atexit
  import copy
  import logging
  import operator
  import sys
  import time
  from collections import defaultdict
  from contextlib import contextmanager
  from typing import TYPE_CHECKING, Any, Optional, Union
  import numpy
  import pytensor
  from pytensor.configdefaults import config
  from pytensor.graph.basic import Apply, Constant, Variable
  from pytensor.link.utils import get_destroy_dependencies
label_desc: Use image node_id 19 for calling the ProfileStats obj's underlying member method code with example usage: obj.summary(file, n_ops_to_print, n_apply_to_print) without return types