Le module atexit est très simple. Il définit uniquement une fonction de registre pour enregistrer une fonction de rappel lorsque le programme se termine. Nous pouvons effectuer certaines opérations de nettoyage de ressources dans cette fonction de rappel. L'article suivant présente principalement les informations pertinentes du module atexit en python. Les amis dans le besoin peuvent s'y référer.
introduction du module atexit
Le module python atexit définit une fonction de registre, qui est utilisée pour enregistrer une fonction de sortie dans le python interpréteur , cette fonction est automatiquement exécutée lorsque l'interpréteur se termine normalement et est généralement utilisée pour effectuer certaines opérations de nettoyage des ressources. atexit exécute ces fonctions dans l'ordre inverse dans lequel elles ont été enregistrées ; par exemple, enregistrez A, B, C et exécutez-les dans l'ordre C, B, A lorsque l'interpréteur se termine.
Remarque : si le programme plante anormalement ou se termine via os._exit()
, la fonction de sortie enregistrée ne sera pas appelée.
Documentation officielle : https://docs.python.org/3.5/library/atexit.html
Fonction de sortie d'enregistrement
atexit.register(func, *args, **kargs)
Mettez func comme fonction à exécuter à la fin. Tous les arguments facultatifs à transmettre à func doivent être transmis en tant qu'arguments à register()
. La même fonction et les mêmes paramètres peuvent être enregistrés plusieurs fois.
Lorsque le programme se termine, les fonctions enregistrées sont appelées dans l'ordre premier entré, dernier sorti. Si une exception est levée lors de l'exécution de la fonction de sortie, atexit imprimera les informations sur l'exception et continuera à exécuter le prochain rappel jusqu'à ce que toutes les fonctions de sortie soient exécutées, et il renverra la dernière exception reçue.
Exemple
Par décorateur :
#!/usr/bin/env python from atexit import register def main(): print('Do something.') @register def _atexit(): print('Done.') if __name__ == '__main__': main()
Méthode non-décoratrice :
#!/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()
Supprimer la fonction de sortie [généralement non utilisée]
> atexit.unregister(func) >
Supprimez func de la liste des fonctions qui s'exécutent lorsque l'interpréteur est fermé. Après avoir appelé unregister()
, lorsque l'interprète est fermé, func ne sera pas appelé même s'il est enregistré plusieurs fois. Si func n'a pas été enregistré, unregister()
ne fera rien.
Pour une compréhension plus approfondie du module atexit en python et des articles associés, veuillez faire attention au site Web PHP chinois !