J'essaie d'utiliser l'outil de multi-traitement en python (3.4.2) pour accélérer mes performances. Mon programme normal fonctionne bien, mais je dois y traiter un dictionnaire volumineux et imbriqué. Attaché une version simplifiée, ce qui montre mon problème. Si j'utilise directement le TestProc, cela fonctionne, avec le multitraitement non.python multitraitement imbriqué dictionay
Merci pour votre aide!
import multiprocessing
def TestProc(liste, results):
for i in liste:
results[i] = {'power':{'square': float(i)**2, 'cubic':
float(i)**3},'root':{'square': float(i)**(1/2), 'cubic': float(i)**(1/3)}}
if __name__ == "__main__":
multiprocessing.freeze_support()
results = multiprocessing.Manager().dict()
results = {}
liste = ['1','2','3','4','5']
for i in liste:
results[i] = multiprocessing.Manager().dict()
print(results)
#TestProc(liste, results)
p1 = multiprocessing.Process(target=TestProc, args=(liste,results,))
p1.start()
p1.join()
print(results)
Vous affectez deux fois de suite 'results' sans utiliser la première valeur, et vous mettez plusieurs' multiprocessing.Manager(). Dict() 'dans les résultats (qu'est-ce que c'est supposé faire , les résultats ne devraient-ils pas commencer * vides *?) – jonatan