17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

atexit<br />

copy : recopie d’objets ;<br />

difflib : module de comparaison de textes ;<br />

time et datetime : modules de manipulation de temps ;<br />

random : module de génération aléatoire.<br />

Principaux modules, partie 2<br />

CHAPITRE 9<br />

Le module atexit fournit une fonction unique qui permet d’empiler des fonctions à<br />

exécuter lorsque le programme se termine. Une fois le code principal exécuté, atexit<br />

dépile les fonctions de la dernière ajoutée à la première.<br />

Ce mécanisme peut être pratique pour nettoyer des éléments ou pour effectuer des<br />

sauvegardes en fin d’exécution de programme.<br />

Dans l’exemple ci-dessous, atexit permet de s’assurer que les threads sont bien tous<br />

arrêtés en sortie de programme.<br />

Nettoyage de threads<br />

import atexit<br />

from threading import Thread<br />

from time import sleep<br />

from sys import stdout<br />

class Work(Thread):<br />

def run(self):<br />

sleep(1)<br />

def cleanup():<br />

for worker in workers:<br />

stdout.write('.')<br />

worker.join()<br />

print('\nEnd')<br />

workers = []<br />

if __name__ == '__main__':<br />

atexit.register(cleanup)<br />

for i in range(100):<br />

workers.append(Worker())<br />

for worker in workers:<br />

worker.start()<br />

287

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!