Heim  >  Artikel  >  Backend-Entwicklung  >  Vertiefendes Verständnis des Atexit-Moduls in Python

Vertiefendes Verständnis des Atexit-Moduls in Python

高洛峰
高洛峰Original
2017-03-08 09:21:011128Durchsuche

Das atexit-Modul ist sehr einfach. Es definiert nur eine Registerfunktion, um eine Rückruffunktion zu registrieren, wenn das Programm beendet wird. In dieser Rückruffunktion können wir einige Ressourcenbereinigungsvorgänge durchführen. Der folgende Artikel stellt hauptsächlich die relevanten Informationen des Atexit-Moduls in Python vor. Freunde in Not können darauf verweisen.

Einführung in das Atexit-Modul

Das Python-Atexit-Modul definiert eine Registerfunktion, die zum Registrieren einer Exit-Funktion in Python verwendet wird interpreter Diese Funktion wird automatisch ausgeführt, wenn der Interpreter normal beendet wird, und wird im Allgemeinen zum Ausführen einiger Ressourcenbereinigungsvorgänge verwendet. atexit führt diese Funktionen in der umgekehrten Reihenfolge aus, in der sie registriert wurden; registrieren Sie beispielsweise A, B, C und führen Sie sie in der Reihenfolge C, B, A aus, wenn der Interpreter beendet wird.

Hinweis: Wenn das Programm ungewöhnlich abstürzt oder über os._exit() beendet wird, wird die registrierte Exit-Funktion nicht aufgerufen.

Offizielle Dokumentation: https://docs.python.org/3.5/library/atexit.html

Exit-Funktion registrieren

atexit.register(func, *args, **kargs)

Geben Sie func als die Funktion ein, die bei Beendigung ausgeführt werden soll. Alle optionalen Argumente, die an func übergeben werden sollen, müssen als Argumente an register() übergeben werden. Dieselbe Funktion und dieselben Parameter können mehrfach registriert werden.

Wenn das Programm beendet wird, werden die registrierten Funktionen in der Reihenfolge „First-in, Last-out“ aufgerufen. Wenn während der Ausführung der Exit-Funktion eine Ausnahme ausgelöst wird, gibt atexit die Ausnahmeinformationen aus und führt den nächsten Rückruf weiter aus, bis alle Exit-Funktionen ausgeführt sind, und löst die zuletzt empfangene Ausnahme erneut aus.

Beispiel

Von Dekorateur:

#!/usr/bin/env python
from atexit import register
def main():
 print('Do something.')
@register
def _atexit():
 print('Done.')
if __name__ == '__main__':
 main()

Nicht-Dekorator-Methode:

#!/usr/bin/env python
from atexit import register
def main():
 #pass
 print('XX')
def goodbye(name, adjective):
 print('Goodbye, %s, it was %s to meet you.' % (name, adjective))
 
register(goodbye, 'Donny', 'nice')
# or:
# register(goodbye, adjective='nice', name='Donny')
if __name__ == '__main__':
 main()

Exit-Funktion löschen [im Allgemeinen nicht verwendet]

> atexit.unregister(func)
>

Entfernen Sie func aus der Liste der Funktionen, die ausgeführt werden, wenn der Interpreter geschlossen ist. Nach dem Aufruf von unregister() wird func beim Schließen des Interpreters nicht aufgerufen, selbst wenn es mehrmals registriert ist. Wenn func nicht registriert wurde, führt unregister() nichts aus.

Für ein tieferes Verständnis des Atexit-Moduls in Python und verwandter Artikel achten Sie bitte auf die chinesische PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn