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 summary_function(self, file):
      print("Function profiling", file=file)
      print("==================", file=file)
      print("  Message: %s" % self.message, file=file)
      print(
          "  Time in %i calls to Function.__call__: %es"
          % (self.fct_callcount, self.fct_call_time),
          file=file,
      )
      if self.fct_call_time > 0:
          print(
              "  Time in Function.fn.__call__: %es (%.3f%%)"
              % (
                  self.vm_call_time,
                  100 * self.vm_call_time / self.fct_call_time,
              ),
              file=file,
          )
          local_time = sum(self.apply_time.values())
          if local_time > 0:
              print(
                  "  Time in thunks: %es (%.3f%%)"
                  % (local_time, 100 * local_time / self.fct_call_time),
                  file=file,
              )
      print("  Total compile time: %es" % self.compile_time, file=file)
      print("    Number of Apply nodes: %d" % self.nb_nodes, file=file)
      print(
          "    Theano Optimizer time: %es" % self.optimizer_time,
          file=file,
      )
      print(
          "       Theano validate time: %es" % self.validate_time,
          file=file,
      )
      print(
          "    Theano Linker time (includes C, CUDA code "
          "generation/compiling): %es" % self.linker_time,
          file=file,
      )
      print("       Import time %es" % self.import_time, file=file)
      print(
          "       Node make_thunk time %es"
          % self.linker_node_make_thunks,
          file=file,
      )
  
      for node, t in sorted(
          self.linker_make_thunk_time.items(),
          key=operator.itemgetter(1),
      )[::-1][:5]:
          print("           Node %s time %es" % (node, t), file=file)
      print("", file=file)
  
      # The validation time is a subset of optimizer_time
      if self.optimizer_time > 0:
          assert self.validate_time < self.optimizer_time
  
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 16 for calling the ProfileStats obj's underlying member method code with example usage: obj.summary_function(file) without return types