Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonプログラム終了ハンドラー(atexit)


Pythonの標準ディストリビューションのatexitモジュールには、register()とunregister()の2つの関数があります。どちらの関数も、既存の関数を引数として取ります。登録された機能は、インタプリタセッションが正常に終了すると自動的に実行されます。

複数の機能が登録されている場合、それらの実行は登録の逆の順序になります。つまり、関数f1()、f2()、f3()が次々に登録され、実行順序はf3()、f2()、f1()になります。

unregister()関数は、自動的に呼び出される関数のリストから指定された関数を削除します。

次のコードは、コードの終了時に関数が自動実行のために登録される方法を示しています。 (注:このコードは、IDLEではなくコマンドラインから実行する必要があります)。プログラムは、ユーザーに連続して数字を入力するように求め、それらを追加します。ループが終了すると、登録された関数savetotal()が自動的に呼び出され、ファイルへの追加が保存されます。

import atexit
sum = 0
def savetotal():
fo = open("atexit.txt","w")
fo.write(str(sum))
print ("sum written to file")
fo.close()
atexit.register(savetotal)
while True:
n = int(input("enter a number. -1 to exit"))
if n == -1:
break
sum = sum + n
print (sum)

上記のコードをatexit-example.pyとして保存し、コマンドラインから実行します。連続する数字の入力が追加され、合計が最後にatexit.txtに書き込まれます。

C:\python36>python atexit-example.py
enter a number. -1 to exit4
enter a number. -1 to exit6
enter a number. -1 to exit3
enter a number. -1 to exit5
enter a number. -1 to exit2
enter a number. -1 to exit-1
20
sum written to file

atexit.txtファイルが現在のディレクトリに作成され、合計(この場合は20)が保存されます。

異なる引数で関数を登録することも可能です。その場合、引数ごとの関数は個別に登録され、登録と逆の順序で実行されます。

import atexit
names = ['Ashok', 'Radha', 'Abdul', 'John']
def hello(name):
print ("Hello",name)
for name in names:
atexit.register(hello,name)

出力

C:\python36>python atexit-example2.py
Hello John
Hello Abdul
Hello Radha
Hello Ashok

atexit.unregister(hello)は、関数のリストからさまざまなパラメーターを持つhello()のすべてのコピーを削除します。

デコレータ構文

関数を登録するための便利な代替手段は、register()関数をデコレータとして使用することです。

import atexit
@atexit.register
def hello():
print('Hello World!')
print('Say Hello')

出力

C:\python36>python atexit-example3.py
Say Hello
Hello World!

プログラムが突然終了したり、os.exit()関数が呼び出されたりした場合、登録された関数は自動的に呼び出されません。

atexitモジュールは、データベースやファイルを閉じる、リソースを解放するなどのクリーンな操作を自動的に実行するのに役立ちます。


  1. Pythonプログラムへの単純な関心

    この記事では、Python3.xでの単利の計算について学習します。またはそれ以前。 単純な関心 は、1日の利率に元本を掛け、支払いの間に経過した日数を掛けて計算されます。 数学的に 単利=(P x T x R)/ 100 どこで、 Pは元本です Tは時間であり Rはレートです たとえば、 P =1000の場合、R =1、T =2 次にSI=20.0 それでは、Pythonで単純な利息計算機を実装する方法を見てみましょう。 例 P = 1000 R = 1 T = 2 # simple interest SI = (P * R * T) / 100 print(&

  2. Pythonプログラムでの選択ソート

    この記事では、Python3.xでの選択ソートとその実装について学習します。またはそれ以前。 選択ソート アルゴリズムでは、配列は、ソートされていない部分から最小要素を再帰的に見つけて、それを先頭に挿入することによってソートされます。特定の配列での選択ソートの実行中に、2つのサブ配列が形成されます。 すでに並べ替えられているサブ配列。 ソートされていないサブアレイ。 選択ソートを繰り返すたびに、ソートされていないサブアレイの最小要素がポップされ、ソートされたサブアレイに挿入されます。 アルゴリズムの視覚的表現を見てみましょう- それでは、アルゴリズムの実装を見てみましょう-