Python脚本需要多个CTRL+;停止

Python脚本需要多个CTRL+;停止,python,python-multithreading,Python,Python Multithreading,我有一个场景,我想处理sigintpython来清理一些东西,然后退出。 我正在使用以下代码 import threading import signal def shutdown_handler(*args): raise SystemExit('Exiting') signal.signal(signal.SIGINT, shutdown_handler) def main(): while 1: time.sleep(2) print(

我有一个场景,我想处理sigintpython来清理一些东西,然后退出。 我正在使用以下代码

import threading
import signal

def shutdown_handler(*args):
    raise SystemExit('Exiting')

signal.signal(signal.SIGINT, shutdown_handler)

def main():
    while 1:
        time.sleep(2)
        print("***")
    
sub_thread = threading.Thread(target=main)
sub_thread.start()
sub_thread.join()
但它需要我在程序退出之前按CTRL+c多次。 下面的方法很好

import time
import threading
import signal

def shutdown_handler(*args):
    # Do some clean up here. 
    raise SystemExit('Exiting')

signal.signal(signal.SIGINT, shutdown_handler)

def main():
    while 1:
        time.sleep(2)
        print("***")
    
main()
我使用的是第一个代码,因为有一个关于线程的建议
你能告诉我为什么会有这种行为吗。是因为多个线程在运行吗?我该如何解决这个问题?
谢谢

如果您只需要使用一个
Control-C
终止程序,请在构造函数中设置
daemon=True

导入线程
输入信号
def关闭_处理程序(*参数):
升起系统退出(“退出”)
signal.signal(signal.SIGINT,关机处理器)
def main():
而1:
时间。睡眠(2)
打印(“***”)
sub_thread=threading.thread(target=main,daemon=True)#这里
sub_thread.start()
sub_thread.join()

看看另一种处理CTRL+C的方法:。您正在运行哪些操作系统和python版本?我正在Ubuntu 18.04.5 LTT上运行python 3.6.9,查看此链接,您需要捕获一个
键盘中断
异常: