import random import signal from threading import Thread from time import sleep class MyException(Exception): pass def sighandler(signum, frame): raise MyException("got signal") def thread_function(): pass i = 0 try: sleep(random.random() / 20) signal.signal(signal.SIGTERM, sighandler) while True: i += 1 thread = Thread(target=thread_function) thread.start() thread.join() except MyException as e: print(i) print('\nok') raise