class_docstr: Create an experiment with time/memory checkpoints
docstr: Instantiate an object with parameters:
  
  Parameters:
  * exp_enable=False   - run just the CellLogger if exp_enable=False, cl_enable=True
  
  Cell logger Parameters: these are being passed to CellLogger (and the defaults)
  * cl_enable=True     - run the cell logger
  * cl_compact=False   - compact cell report
  * cl_gc_collect=True - gc_collect at the end of each cell before mem measurement
  * cl_set_seed=0      - set RNG seed before each cell is run to the provided value
docstr_tok: ["Instantiate","an","object","with","parameters",":","Parameters",":","*","exp_enable=False","-","run","just","the","CellLogger","if","exp_enable=False",",","cl_enable=True","Cell","logger","Parameters",":","these","are","being","passed","to","CellLogger","(","and","the","defaults",")","*","cl_enable=True","-","run","the","cell","logger","*","cl_compact=False","-","compact","cell","report","*","cl_gc_collect=True","-","gc_collect","at","the","end","of","each","cell","before","mem","measurement","*","cl_set_seed=0","-","set","RNG","seed","before","each","cell","is","run","to","the","provided","value"]
code: def __init__(
      self,
      exp_enable=True,
      cl_enable=True,
      cl_compact=False,
      cl_gc_collect=True,
      cl_set_seed=0,
  ):
      """Instantiate an object with parameters:
  
      Parameters:
      * exp_enable=False   - run just the CellLogger if exp_enable=False, cl_enable=True
  
      Cell logger Parameters: these are being passed to CellLogger (and the defaults)
      * cl_enable=True     - run the cell logger
      * cl_compact=False   - compact cell report
      * cl_gc_collect=True - gc_collect at the end of each cell before mem measurement
      * cl_set_seed=0      - set RNG seed before each cell is run to the provided value
      """
  
      logger.debug(f"{self.__class__.__name__}::__init__: {self}")
  
      self.cl_enable = cl_enable
      self.cl_kwargs = dict(
          compact=cl_compact,
          gc_collect=cl_gc_collect,
          set_seed=cl_set_seed,
      )
      self.enable = exp_enable
  
      self.running = False
  
      if not self.enable:
          return
  
      self.reclaimed = False
      self.start_time = time.time()
      self.var_names_keep = []
  
      # grab the notebook var names during creation
      ipython = get_ipython()
      self.namespace = NamespaceMagics()
      self.namespace.shell = ipython.kernel.shell
      self.var_names_start = self.get_var_names()
  
imports: import gc
  import logging
  import os
  import psutil
  import sys
  import threading
  import time
  import weakref
  from IPython import get_ipython
  from IPython.core.magics.namespace import NamespaceMagics
  from collections import namedtuple
  from .cell_logger import CellLogger, b2mb, int2width, get_nvml_gpu_id
label_desc: Use image node_id 1 to create a new IPyExperiments object  with example: obj = IPyExperiments(exp_enable, cl_enable, cl_compact, cl_gc_collect, cl_set_seed)