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 __init__(
      self, atexit_print=True, flag_time_thunks=None, **kwargs
  ):
      self.apply_callcount = {}
      self.output_size = {}
      # Keys are `(FunctionGraph, Variable)`
      self.apply_time = {}
      self.apply_cimpl = {}
      self.variable_shape = {}
      self.variable_strides = {}
      self.variable_offset = {}
      if flag_time_thunks is None:
          self.flag_time_thunks = config.profiling__time_thunks
      else:
          self.flag_time_thunks = flag_time_thunks
      self.__dict__.update(kwargs)
      if atexit_print:
          global _atexit_print_list
          _atexit_print_list.append(self)
          global _atexit_registered
          if not _atexit_registered:
              atexit.register(_atexit_print_fn)
              _atexit_registered = True
      self.ignore_first_call = config.profiling__ignore_first_call
  
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 2 to create a new ProfileStats object  with example: obj = ProfileStats(atexit_print, flag_time_thunks)