2011-04-27 3 views
0

Je disons que j'ai une classe Python:multitraitement Python classe Object

class Something: 
    def __init__(self, a, b, c): 
     initialize_object_with_args() 

    def run(self): 
     do_something() 

    def result(self): 
     return result 

Maintenant, je veux créer plusieurs objets de cette catégorie (qui sont tous indépendants - pas besoin d'échange de données entre les objets) et de les exécuter en parallèle sur un seul PC avec un CPU multi-cœurs ... la seule chose qui change sont les arguments d'entrée (a, b, c) pour chaque passage ...

donc je besoin ceci:

results = [] 
[PARALLEL START] 
    obj = Something(a, b, c) 
    obj.run() 
    results.append(obj.results()) 
[PARALLEL END] 

Je pourrais alors évaluer les résultats! Je vois que le module multitraitement serait ce dont j'ai besoin mais je ne connais pas les spécificités ni si ça peut faire ce dont j'ai besoin et comment?

Quick Edit: je dois pouvoir le faire avec Python ... pas de modules externes ... juste le standard de Python installer ...

Répondre

0

Il semble être très similaire à this

from multiprocessing import Pool 

def func(*args): 
    obj = Something(*args) 
    obj.run() 
    return obj.results() 

pool = Pool() 
results = pool.map(func, ((1,2,3), (4,5,6))) 
+0

Si Python 3.2 est une option, puis 'concurrent.futures' peut offrir certains avantages comme un niveau légèrement supérieur (il utilise encore le multitraitement sous le capot, cependant) – ncoghlan