code: def _sigterm_notifier_fn(self, signum: _SIGNUM, _: FrameType) -> None:
      log.info(
          rank_prefixed_message(
              f"Received SIGTERM: {signum}", self.trainer.local_rank
          )
      )
      # subprocesses killing the parent process is not supported, only the parent (rank 0) does it
      if not self.received_sigterm:
          # send the same signal to the subprocesses
          launcher = self.trainer.strategy.launcher
          if launcher is not None:
              launcher.kill(signum)
      self.received_sigterm = True
  
imports: import logging
  import os
  import re
  import signal
  import sys
  import threading
  from subprocess import call
  from types import FrameType
  from typing import Any, Callable, Dict, List, Set, Union
  import lightning.pytorch
  from lightning.fabric.plugins.environments import SLURMEnvironment
  from lightning.fabric.utilities.imports import _IS_WINDOWS, _PYTHON_GREATER_EQUAL_3_8_0
  from lightning.pytorch.utilities.rank_zero import rank_prefixed_message, rank_zero_info
label_desc: Use image node_id 4 for calling the _SignalConnector obj's underlying member method code with example usage: obj._sigterm_notifier_fn(signum, _) without return types