MagPI 10 Page 34

De Le French MagPi
Aller à : Navigation, rechercher
  def __init__(self):
    self.calculator = FunctionCalculator()
def evaluate(self, cmds): results=[] for cmd in cmds: results.append(self.calculator.evaluate(cmd)) return results

La classe FunctionCalculator est une simple classe qui a une fonction membre qui exécute la valeur d'une chaîne en tant que commande python. La classe SynchronousCalculator inclut une instance de la classe FunctionCalculator pour évaluer de nombreuses commandes les unes après les autres. Dans le cas de FunctionCalculator, la méthode evaluate accepte une chaîne en entrée, tandis que la fonction SynchronousCalculator accepte une liste de chaînes.

Pour tester FunctionCalculator.py ouvrez un shell python en tapant python. Ensuite, tapez:

from FunctionCalculator import FunctionCalculator
f = FunctionCalculator()
f.evaluate("y=5*100")

Cette fonction d'évaluation affiche la commande et son résultat. Beaucoup de points d'une fonction mathématique peuvent être évalués grâce à SynchronousCalculator. Par exemple, dix points de la courbe y=x^2 peuvent être calculés en tapant :

from FunctionCalculator import *
import math
f_sync = SynchronousCalculator()
cmds = []
for x in xrange(11):
  cmds.append("import math; y = math.pow(%f, 2)" % (x))

f_sync.evaluate(cmds)

Remarquez que la classe FunctionCalculator, qui est utilisée par la classe SynchronousCalculator, n'a pas besoin d'importer les fonctions mathématiques jusqu'à ce qu'elles soient nécessaires lors de l'évaluation de la commande. Cela devient très puissant lorsque c'est utilisé avec de nombreux ordinateurs, où la fonction à évaluer à distance peut ne pas être connue avant l'exécution.

La prochaine étape nécessaire pour améliorer la vitesse de calcul est d'utiliser plus d'un ordinateur. Pour ce faire, un Raspberry Pi sera nécessaire en tant que serveur et un autre Raspberry Pi ou un autre ordinateur sera nécessaire en tant que client. Branchez les deux Raspberry Pi ou le Raspberry Pi et un autre ordinateur sur le réseau. Ensuite, trouvez les adresses IP des deux machines. Sur Linux ou OSX, tapez ifconfig, ou tapez ipconfig sous Windows.

Afin d'éviter des difficultés avec la translation d'adresse réseau (NAT), assurez-vous que les deux ordinateurs sont sur le même réseau. Ensuite, testez la liaison à l'aide d'un ping d'une machine à l'autre. Par exemple,

ping -c 5 192.168.1.12

Si cela réussit, la commande renvoie cinq fois le temps que le ping a pris. Utilisez la commande ping à partir des deux machines pour être absolument sûr que l'accès réseau fonctionne comme prévu. Maintenant, créez un fichier SimpleServer.py contenant

import socket
import threading
class SimpleServer: def __init__(self, host, port): self.host = host self.port = port self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.settimeout(None) self.client_sockets = []
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils