3.5 atexit -- 終了ハンドラ

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

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

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

これはsys.exitfunc変数がはたす機能の代わりのインターフェイスです。

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

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

通常のプログラムの終了時、例えばsys.exit()が呼び出されるとき、あるいは、メインモジュールの実行が完了したときに、登録されたすべての関数は後入先出順に呼び出されます。より低レベルのモジュールは通常より高レベルのモジュールより前にインポートされ、従ってより後で後始末するということが想定されています。

参考資料:

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



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