Pythonでは、ユーザーがCtrl-Cを呼び出すとどうなりますか?プログラムの状態を保存する可能性はありますか?ユーザーがCtrl-Cを呼び出すとプログラムの状態を保存する
コンテキストマネージャーについてはどうですか? __exit__()
セクションは実行されますか?
Pythonでは、ユーザーがCtrl-Cを呼び出すとどうなりますか?プログラムの状態を保存する可能性はありますか?ユーザーがCtrl-Cを呼び出すとプログラムの状態を保存する
コンテキストマネージャーについてはどうですか? __exit__()
セクションは実行されますか?
基本的には、メインスレッド内ではKeyboardInterrupt
例外が発生します。そうです、あなたはtry/exceptブロックでそれをキャッチすることにより、それを扱うことができ、__exit__()
のセクションでは、これはatexitモジュールが何のためにあるのかである
https://docs.python.org/2/library/exceptions.html#exceptions.KeyboardInterrupt
実行されます。複数の出口ハンドラを登録できます。あなたはこのプログラムを実行すると、メッセージが表示されていることを観察することによって、仕事でそれを見ることができます。
import atexit
@atexit.register
def exithandler():
print("Exit trapped!")
if __name__ == '__main__':
while True:
pass
私はちょうどそれに建てCtrlキー + Cと、より多くを扱うことができるでもあるsignalに言及しますこれは、多数の信号を扱うことができ、広い枠組みの一例である等SIGHUP
import signal
def signal_handler(signal, frame):
# Do work
# Thread cleanup
# pickle program state
# remove(pidfile) # as an example
exit(0)
signal.signal(signal.SIGINT, signal_handler)
ような信号。
Here's a listあなたが捕まえることができるシグナルのいくつか。