Bonjour

Voila mon problème, j'ai une classe représentant un objet de type hash qui contient les méthodes md5, sha1...sha512.
Ces méthodes créent des objets de type thread_algo (thread_md5, thread_sha1...) qui lorsqu'ils sont appelés calculent le hash d'une chaine passée en paramètre avant d'en retourner la valeur dans une variable récupérée ensuite par la méthode de l'objet hash qui la retourne.

Ma question est la suivante :

Dans mon programme principal, puis-je créer un objet hash et en appeler successivement les méthodes de calcul sans problème ? ou cela va-t-il poser problème (execution non simultanée ou des trucs du genre).

Ca donnerai quelque chose du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
a = hash(string_to_hash)
a.md5()
a.sha1()
a.sha224()
....
Avec l'objet hash (incomplet) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
class hash():
    def md5(self):
        threadmd5 = thread_md5(self.target) # en admetant que self.target soit déclarer dans la fonction __init__
return threadmd5.result()
Et l'objet thread_md5 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
class thread_md5(threading.Thread):
    def __init__(self, target):
        threading.Thread.__init__(self)
        self.target = target
    def run(self):
        self.result = hashlib.md5(self.target).hexdigest()
    def result(self):
        return self.result
Autre question : Ne vais-je pas utiliser beaucoup trop de mémoire en transmettant la chaine target d'objet en objet en en créant une copie propre à chaque thread etc... ? Comme ca doit pouvoir être rapide sur de gros fichiers ca me préoccupe.

Merci de votre aide.
Au revoir