17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

452<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

De plus, si les résultats renvoyés sont des éléments prenant une certaine place en<br />

mémoire, il faut s’assurer que le mécanisme de caching, qui se charge d’écrire mais<br />

aussi de récupérer les valeurs, ne coûte pas plus cher que le calcul lui-même.<br />

Enfin, si la mémoire occupée par le cache devient trop importante, et si les conditions<br />

le permettent, il peut être intéressant d’externaliser le stockage du cache vers un<br />

serveur spécialisé dans la gestion de cache mémoire distribué.<br />

Le serveur Open Source memcached (http://www.danga.com/memcached/) répond relativement<br />

bien à ce besoin.<br />

Multithreading<br />

Le multithreading consiste à détacher l’exécution d’une tâche de l’exécution principale<br />

lorsque la suite immédiate du programme n’est pas dépendante des résultats. La tâche<br />

est exécutée dans un nouveau thread et le programme devient le thread principal.<br />

Cette situation se rencontre :<br />

Dans les applications interactives, lorsqu’une commande lance une tâche et renvoie<br />

la main immédiatement à l’utilisateur, qui peut continuer à utiliser le programme<br />

en attendant les résultats.<br />

Dans les programmes de type serveur, où chaque demande client est gérée dans<br />

un nouveau thread. Par exemple, un serveur FTP détache une session avec un<br />

client dans un thread afin de rester disponible pour d’autres demandes.<br />

Dans les applications où l’on souhaite découpler la production et l’utilisation de<br />

données, ces données pouvant être produites par une source externe non maîtrisée.<br />

C’est le cas par exemple de programmes de téléchargement comme BitTorrent.<br />

etc.<br />

CULTURE Quelques définitions courtes<br />

Un thread est associé par le système à un unique processus, qui représente le programme en cours d’exécution<br />

en mémoire. Il peut exécuter du code comme un processus.<br />

Un processus peut posséder un nombre indéfini de threads. Un thread est différent d’un processus, car il<br />

partage, avec tous les threads issus du même processus, le même espace mémoire. On parle de ressources<br />

partagées.<br />

Ressources partagées : difficultés de programmation<br />

Les threads partagent le même espace mémoire, il est donc nécessaire de prendre des<br />

précautions lorsqu’ils utilisent les mêmes éléments.

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

Saved successfully!

Ooh no, something went wrong!