Maison >développement back-end >Tutoriel Python >Compréhension approfondie du module atexit en python

Compréhension approfondie du module atexit en python

高洛峰
高洛峰original
2017-03-08 09:21:011192parcourir

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 !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn