class_docstr: A thread that executes a function and catches all soft interrupts.
  Users very often Ctrl-C to stop the program multiple times which leaves
  program no chance to clean up.
class_docstr_tok: ["A","thread","that","executes","a","function","and","catches","all","soft","interrupts",".","Users","very","often","Ctrl-C","to","stop","the","program","multiple","times","which","leaves","program","no","chance","to","clean","up","."]
code: def __init__(self, *args, stop_signal, **kwargs):
      super().__init__(*args, **kwargs)
      self.stop_signal = stop_signal
  
file_path: aim/aim/ext/cleanup/__init__.py
imports: import time
  from abc import abstractmethod
  import atexit
  import weakref
  import logging
  import threading
  from typing import Generic, Tuple, TypeVar, Dict
label_desc: Use image node_id 1 to create a new RobustExec object from inherited base classes: threading with example: obj = RobustExec()