code: def update_callback(self, callback):
      if self._exit_callback and not six.PY2:
          # noinspection PyBroadException
          try:
              atexit.unregister(self._exit_callback)
          except Exception:
              pass
      self._exit_callback = callback
      if callback:
          self.hook()
      else:
          # un register int hook
          if self._orig_exc_handler:
              sys.excepthook = self._orig_exc_handler
              self._orig_exc_handler = None
          for h in self._org_handlers:
              # noinspection PyBroadException
              try:
                  signal.signal(h, self._org_handlers[h])
              except Exception:
                  pass
          self._org_handlers = {}
  
file_path: clearml/clearml/utilities/process/exit_hooks.py
imports: import atexit
  import os
  import signal
  import sys
  import six
  from ...logger import Logger
label_desc: Use image node_id 2 for calling the ExitHooks obj's underlying member method code with example usage: obj.update_callback(callback) without return types