class_docstr: Object to store runtime and memory profiling information for all of
  Theano's operations: compilation, optimization, 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","Theano","'s","operations",":","compilation",",","optimization",",","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,
      gpu_checks=True,
      **kwargs,
  ):
      if (
          gpu_checks
          and (
              hasattr(theano, "gpuarray")
              and theano.gpuarray.pygpu_activated
          )
          and os.environ.get("CUDA_LAUNCH_BLOCKING", "0") != "1"
      ):
          msg = (
              "You are running the Theano profiler with CUDA enabled."
              " Theano GPU ops execution is asynchronous by default."
              " So by default, the profile is useless."
              " You must set the environment variable"
              " CUDA_LAUNCH_BLOCKING to 1 to tell the CUDA driver to"
              " synchronize the execution to get a meaningful profile."
          )
          if config.profile:
              raise Exception(msg)
          else:
              warnings.warn(msg)
  
      if (
          config.profile
          and gpu_checks
          and hasattr(theano, "gpuarray")
          and theano.gpuarray.pygpu_activated
          and not config.profiling.ignore_first_call
      ):
          warnings.warn(
              "Theano flag profiling.ignore_first_call is False. "
              "This cause bad profiling result in the gpu "
              "back-end, as sometimes we compile at the first call."
          )
  
      self.apply_callcount = {}
      self.output_size = {}
      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 = theano.config.profiling.ignore_first_call
  
imports: from __future__ import absolute_import, print_function, division
  import atexit
  import copy
  import logging
  import operator
  import os
  import sys
  import time
  from collections import defaultdict
  from six import iteritems
  import warnings
  import numpy
  import theano
  from theano.gof import graph
label_desc: Use image node_id 2 to create a new ProfileStats object from inherited base classes: object with example: obj = ProfileStats(atexit_print, flag_time_thunks, gpu_checks)