这是根据其他答案改编的版本。它应该可以正常工作(未经全面测试),可以正常退出、终止,以及使用 PyCharm 停止按钮(我可以确认的最后一个)。
import signal
import atexit
def handle_exit(*args):
try:
... do computation ...
except BaseException as exception:
... handle the exception ...
atexit.register(handle_exit)
signal.signal(signal.SIGTERM, handle_exit)
signal.signal(signal.SIGINT, handle_exit)