2011-10-21 2 views
1

J'ai une liste d'objets et pour chacun d'eux je veux appeler leur fonction foo, en lui passant la barre d'argument. Je veux paralléliser cette opération, donc maintenant je cherche à utiliser Pool.map du paquet multi-traitement. Cependant, je ne suis pas sûr de savoir comment utiliser map pour exécuter une méthode d'objet. Comment puis je faire ça? Ou y a-t-il une meilleure façon de le faire en parallèle?Paralléliser l'appel des méthodes d'objet

Répondre

2

Définissez une fonction d'assistance et transmettez la méthode d'objet et ses arguments à cette fonction via Pool.map. La fonction d'aide ressemblerait à quelque chose comme ceci:

def helper(*args): 
    return args[0](*args[1:]) 

et que vous l'utiliser comme ceci:

pool = Pool() 
results = pool.map(helper, [obj.method, arg1, arg2]) 

Notez que la fonction d'aide doit être directement importable de son module contenant.