Multitraitement piscine apply_async' semble que la fonction d'appel d'une fois

J'ai suivi la doc pour essayer de comprendre le traitement multiple des piscines. Je suis venu avec cette:

import time
from multiprocessing import Pool

def f(a):
    print 'f(' + str(a) + ')'
    return True

t = time.time()
pool = Pool(processes=10)
result = pool.apply_async(f, (1,))
print result.get()
pool.close()
print ' [i] Time elapsed ' + str(time.time() - t)

Je suis en train d'utiliser 10 des processus pour évaluer la fonction f(a). J'ai mis une instruction print dans f.

C'est le résultat que j'obtiens:

$ python pooltest.py 
f(1)
True
 [i] Time elapsed 0.0270888805389

Il me semble que la fonction f est seulement évaluée une fois.

Je suis susceptible de ne pas utiliser la bonne méthode, mais le résultat final, je suis à la recherche d'consiste à exécuter f avec 10 processus simultanément, et obtenir le résultat retourné par chacun de ces processus. Donc, je voudrais terminer avec une liste de 10 résultats (qui peuvent ou peuvent ne pas être identiques).

Docs sur le multitraitement sont assez confus et il n'est pas trivial de comprendre que l'approche que je devrais prendre, et il me semble que f doit être exécuté 10 fois dans l'exemple que j'ai fourni ci-dessus.

apply_async n'est pas destiné à lancer plusieurs processus; il a simplement pour but d'appeler la fonction avec les arguments de l'un des processus de la piscine. Vous aurez besoin de faire 10 appels si vous voulez que la fonction à appeler 10 fois.
Entendu, merci pour la clarification. Serait la meilleure méthode pour for boucle de 10 appels ou est-il plus approprié de l'outil dans le multiprocessing module pour ce que je suis en train de réaliser?
Vous souhaitez faire appel de la fonction avec les mêmes arguments à chaque fois?
Oui, il est 10 fois les mêmes arguments. La fonction dépend d'autres vars extrait de la net donc le résultat peut être différent à chaque fois.
Ah, si vous avez des fonctions différentes à chaque fois? Ensuite, vous avez une liste de fonctions, et que vous appelez "appliquer cette fonction de" un tas de fois. OK

OriginalL'auteur Juicy | 2015-02-09