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!