2

だから私はあなたが期待するようにコマンドプロンプトで実行するpythonスクリプトを持っています

python myscript.py

スクリプト内には、Ctrl+C をインターセプトする行があり、いくつかのことを片付けてスクリプトをシャットダウンすることになっています。

def check_for():
    while True:
        # Perform check and operation if needed

if __name__ == '__main__': 
    try:
        threading.Thread(target=check_for).start()
        # Perform script duties

    except KeyboardInterrupt:
        print "Tidying up a few things"
        # Performs tidying duties
        sys.exit()

しかし、実際にはプログラムを終了していないようです。メッセージが出力されるので、その割り込み信号を取得していることがわかりますが、コマンドプロンプトで制御を戻すことができず、タスクマネージャーを見ると、まだ実行中のpythonプロセスが表示されます。そのプロセスを終了して初めて、私はコントロールを取り戻すことができます。実際、プログラムが中断されることなく正常に終了したとしても、プロセスは残ります。

私のプログラムは子スレッドを生成します。そのため、例外ではないと聞いた他のメソッドよりもsys.exit()を使用し、より突然終了します。

私は何か間違ったことをしていますか?これを行うクロスプラットフォームの方法はありますか (これは私が sys.exit() だと思っていたものです)?

編集:だから私は問題を切り分けました。小さなテスト スクリプトを作成しましたが、スレッドを作成しても死なず、プログラムが終了しないようです。セットアップを表示するために初期コードを変更しました。

4

0 に答える 0