Multiprocessing

blaidddrwg Messages postés 4 Date d'inscription samedi 24 septembre 2022 Statut Membre Dernière intervention 3 octobre 2022 - 3 oct. 2022 à 13:57
programmeur_78 Messages postés 1 Date d'inscription samedi 22 octobre 2022 Statut Membre Dernière intervention 22 octobre 2022 - 22 oct. 2022 à 10:51

Bonjour,

Je développe pour mon propre plaisir une application qui va faire certains calculs et, pour les accélérer, je voudrais que les calculs se fassent en parallèle, voilà le code que j'ai fait :

from multiprocessing import Pool


s=pow(2,3021377)-1
i=0
p=pow(2,44497)-1
q=pow(2,1257787)-1
m=q*p
a=s
a=pow(a,2) % m

def calc(x):
    return pow(a,2) % m
if __name__=='__main__':
    while a!=s :
           i=i+1
           with Pool(4) as p:
               print(a)
               p.map(calc,a) 
print("Fin !",i)

Mais lors de l'instruction p.map, visual studio me dit qu'un integer n'est pas iterable; où est le problème ?

Merci pour votre aide,

1 réponse

programmeur_78 Messages postés 1 Date d'inscription samedi 22 octobre 2022 Statut Membre Dernière intervention 22 octobre 2022
22 oct. 2022 à 10:51

Bonjour,

Dans un premier temps, votre fonction calc a un léger problème : vous demandez un argument x dont vous ne vous servez pas et vous mentionnez une variable  qui n'a pas été globalisée dans la fonction...

Votre problème vient du fait que la fonction p.map(f,iter) applique une fonction f à chacun des items de l'iterable qui lui est soumit,en parallèle (ce qui la différencie de la fonction built-in "map" qui fait la même chose, mais en prenant les items les uns après les autres). a étant une valeur numérique et non un itérable, cela ne peut pas marcher.

0
Rejoignez-nous