バージョン2.0 以降で新規追加された 仕様です。
atexitモジュールは後始末関数を登録するための一つの関数を定義します。このような登録された関数はインタープリタが終了するときに自動的に実行されます。
注意: プログラムがシグナルで停止させられたとき、Pythonの致命的な内部エラーが検出されたとき、あるいはos._exit()が呼び出されたときには、このモジュールを通して登録された関数は呼び出されません。
これはsys.exitfunc
変数がはたす機能の代わりのインターフェイスです。
注意: sys.exitfunc
を設定する他のコードとともに使用した場合には、このモジュールが正しく動作しないと思われます。特に、他のコアPythonモジュールはプログラマの知らないところでatexitを自由に使えます。sys.exitfunc
を使う著者は、代わりにatexitを使うコードに変換すべきです。sys.exitfunc
を設定するコードを変換するもっとも簡単な方法は、atexitをインポートしてsys.exitfunc
へ束縛されていた関数を登録することです。
func[, *args[, **kargs]]) |
通常のプログラムの終了時、例えばsys.exit()が呼び出されるとき、あるいは、メインモジュールの実行が完了したときに、登録されたすべての関数は後入先出順に呼び出されます。より低レベルのモジュールは通常より高レベルのモジュールより前にインポートされ、従ってより後で後始末するということが想定されています。