class_docstr: Unconditional start-to-finish program execution in Python.
  
  Garbage collection is possible on intermediate results when the
  `post_thunk_clear` constructor argument is non-``None``.
class_docstr_tok: ["Unconditional","start-to-finish","program","execution","in","Python",".","Garbage","collection","is","possible","on","intermediate","results","when","the","`","post_thunk_clear","`","constructor","argument","is","non-","``","None","``","."]
code: def __call__(self):
      if self.time_thunks:
          for cont in self.pre_call_clear:
              cont[0] = None
          try:
              i = 0
              for thunk, node, old_storage in zip_longest(
                  self.thunks,
                  self.nodes,
                  self.post_thunk_clear,
                  fillvalue=(),
              ):
                  t0 = time.perf_counter()
                  thunk()
                  t1 = time.perf_counter()
                  self.call_counts[i] += 1
                  self.call_times[i] += t1 - t0
                  for old_s in old_storage:
                      old_s[0] = None
                  i += 1
          except Exception:
              raise_with_op(self.fgraph, node, thunk)
      else:
          for cont in self.pre_call_clear:
              cont[0] = None
          try:
              for thunk, node, old_storage in zip_longest(
                  self.thunks,
                  self.nodes,
                  self.post_thunk_clear,
                  fillvalue=(),
              ):
                  thunk()
                  for old_s in old_storage:
                      old_s[0] = None
          except Exception:
              raise_with_op(self.fgraph, node, thunk)
  
      return self.perform_updates()
  
imports: import platform
  import sys
  import time
  import warnings
  from abc import ABC, abstractmethod
  from collections import defaultdict
  from collections.abc import Sequence
  from itertools import zip_longest
  from typing import TYPE_CHECKING, Any, Optional
  from pytensor.configdefaults import config
  from pytensor.graph.basic import Apply, Constant, Variable
  from pytensor.link.basic import Container, LocalLinker
  from pytensor.link.c.exceptions import MissingGXX
  from pytensor.link.utils import gc_helper, get_destroy_dependencies, map_storage, raise_with_op
label_desc: Use image node_id 2 for calling the Loop obj's underlying member method code with example usage: obj.__call__() and returns: self