1

我究竟做错了什么 ?

我只需要在 Control+C 上杀死两个线程。

def cleanup_stop_thread():
    for thread in enumerate():
        if thread.isAlive():
            try:
                self._Thread__stop()
            except:
                print(str(thread.getName()) + ' could not be terminated')

if __name__ == '__main__':  
    try:
        threading.Thread(target = record).start()
        threading.Thread(target = ftp).start()
    except (KeyboardInterrupt, SystemExit):
        cleanup_stop_thread();
        sys.exit()
4

2 回答 2

7

与其尝试在 Ctrl+C 上杀死它们,不如让它们成为守护线程?然后当主线程死亡时它们会自动退出。

t1 = threading.Thread(target=record)
t1.daemon = True
t1.start()

t2 = threading.Thread(target=ftp)
t2.daemon = True
t2.start()
于 2012-10-14T18:39:26.557 回答
0

如果您想在键入 CTRL+C 时终止所有线程,只需添加一个 try 块并导入 os 并在您想要终止所有内容时执行 os._exit(0) 还检查 atexit 模块

希望它有所帮助:)

于 2012-10-14T18:46:25.983 回答