from signal import pthread_kill from signal import signal as sigsignal class SignalRouter: def __init__(self): self.signal_thread_dictionary = {} def __route_signal(self, signal, frame): for thread_ident in self.signal_thread_dictionary[signal]: pthread_kill(thread_ident, signal) def register_signal_thread(self, signal, thread_ident): self.signal_thread_dictionary.setdefault(signal, []).append(thread_ident) sigsignal(signal, self.__route_signal)