MagPI 10 Page 33

De Le French MagPi
Aller à : Navigation, rechercher

Le repaire du Python

Calculs parallèles - Partie 1

DIFFICULTÉ : AVANCÉ

Les exemples précédents en Python ont proposé l'accès d'un serveur Web aux programmes. Cependant, parfois, d'autres relations client-serveur peuvent être utiles. L'article de ce mois-ci est la première partie d'une application client-serveur de base, qui montre comment d'autres applications peuvent être écrites.

Le Raspberry Pi peut être déployé avec des panneaux solaires ou des batteries et connecté à un réseau à l'aide d'une clé wifi. De cette façon, il peut être utilisé pour la surveillance à distance ou la robotique. D'un autre côté, le Raspberry Pi pourrait être utilisé comme centre de contrôle d'un système informatique. Dans le premier exemple, le Raspberry Pi peut être un client ou un serveur. Dans l'exemple qui suit, le Raspberry Pi est susceptible d'être un serveur.

Les serveurs sont des processus qui attendent que les clients se connectent à eux. Quand un serveur reçoit une requête d'un client, il est habituel d'allouer un fil d'exécution (thread) à la connexion du client. Un fil d'exécution est la plus petite séquence d'instructions programmées qui peut être gérée indépendamment par un système d'exploitation. Souvent, le processus d'écoute du serveur s'exécute comme un fil d'exécution et alloue à chaque client un fil parmi le nombre limité disponible. Lorsque le client a terminé, le fil d'exécution sur le serveur doit être libéré pour une nouvelle connexion. Si le serveur créait un nouveau fil à chaque connexion d'un client, il serait rapidement à court de mémoire.

Parfois les calculs nécessitent plus d'un ordinateur pour fournir un résultat rapide. Quand un problème de physique ou d'ingénierie est décrit par une équation comportant plusieurs variables, trouver un minimum global pour l'équation peut être impossible sur le papier et prendrait trop de temps avec un seul ordinateur. Pour résoudre ce problème, on peut connecter des ordinateurs en réseau pour calculer de nombreux points et résoudre numériquement l'équation beaucoup plus rapidement. Bien que le Raspberry Pi n'ait pas le CPU le plus rapide, il peut être utilisé pour démontrer ce principe. Pour les parties client-serveur de ce problème un autre Raspberry Pi ou un autre ordinateur sera nécessaire. Si vous avez beaucoup d'autres ordinateurs pour jouer avec ou si pouvez inviter plusieurs amis, ce sera d'autant mieux.

Classes et fonction évaluation

Créez un fichier appelé FunctionCalculator.py et ajoutez-y :

# Une classe pour calculer la valeur d'une chaîne de fonctions
Class FunctionCalculator:
  def evaluate (self, cmd):
  y = 0.
  print "exec \"%s\"" % cmd
  exec cmd
  print "y = %e" % y
  return y
# Une classe pour calculer un grand nombre
# de résultat de nombreuses équations à la fois.
Class SynchronousCalculator:
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils