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 に答える