Lancer une fonction automatiquement à l’arrêt de Python


Vous avez des envies de sortie grandiloquentes ? Ou juste besoin d’un peu de ménage à l’arrêt de la machine virtuelle de Python ?

Il y a un module pour ça™.

import atexit
 
# la version courte
@atexit.register
def strange_game():
    print "What about a nice game of chess ?"
 
 
def last_word(word="rosebud"):
    print word
 
# la version qui autorise des arguments
atexit.register(last_word, word="Monde de merde")

Les fonctions ne sont pas garanties d’être appelées dans un ordre précis.

4 thoughts on “Lancer une fonction automatiquement à l’arrêt de Python

  • VonTenia

    “Monde de merde”… C’est sûrement un nom, si c’est une femme, je veux savoir quelle femme. Si c’est un cheval, je veux savoir dans quelle course !

  • Sam Post author

    Monde de merde qui remonte dans la 3eme… Ca serait bon. Ca serait la classe même.

  • JeromeJ

    Ou entourer tout son programme par un try: except: finally: :)
    au moins on est sûr de l’ordre d’appel des fonctions :p

  • Sam Post author

    Mais ça ne fait pas la même chose. Ca appellera les fonctions à la fin de l’éxécution de son programme. Mais par exemple, si d’autres libs ont des bouts de code qui tournent dans des threads, le finally peut se lancer bien avant que eux se terminent. atexit() garanti que les fonctions sont executées à la fermeture de la VM, pas d’un block de code.

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.