26.6 atexit -- 終了ハンドラ

バージョン 2.0 で 新たに追加 された仕様です。

atexit モジュールでは、後始末関数を登録するための関数を一つだ け定義しています。この関数を使って登録した後始末関数は、インタプリタが 終了するときに自動的に実行されます。

注意: プログラムがシグナルで停止させられたとき、Python の致命的な内部 エラーが検出されたとき、あるいはos._exit()が呼び出された ときには、このモジュールを通して登録した関数は呼び出されません。

このモジュールは、sys.exitfunc 変数の提供している機能の代用とな るインタフェースです。

注意: sys.exitfuncを設定する他のコードとともに使用した場合には、 このモジュールは正しく動作しないでしょう。特に、他のコア Python モジュールでは、プログラマの意図を知らなくてもatexitを自由に 使えます。sys.exitfunc を使っている人は、代わりに atexitを使うコードに変換してください。 sys.exitfunc を設定するコードを変換するには、atexit を import し、sys.exitfunc へ束縛されていた関数を登録するのが 最も簡単です。

register( func[, *args[, **kargs]])
終了時に実行される関数としてfuncを登録します。すべてのfunc へ渡すオプションの引数を、register()へ引数としてわたさなけ ればなりません。

通常のプログラムの終了時、例えばsys.exit() が呼び出されると き、あるいは、メインモジュールの実行が完了したときに、登録された全ての 関数を、最後に登録されたものから順に呼び出します。通常、より低レベルの モジュールはより高レベルのモジュールより前に import されるので、 後で後始末が行われるという仮定に基づいています。

終了ハンドラの実行中に例外が発生すると、(SystemExit以外の 場合は)トレースバックを表示して、例外の情報を保存します。 全ての終了ハンドラに動作するチャンスを与えた後に、最後に送出された 例外を再送出します。

参考:

readline:モジュール
readlineヒストリファイルを読み書き するためのatexitの有用な例です。.



Subsections
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。