J'ai essayé de lire la documentation sur http://docs.python.org/dev/library/multiprocessing.html mais je suis toujours aux prises avec le multiprocessing Queue, Pool et Locking. Et pour l'instant, j'ai pu construire l'exemple ci-dessous.
En ce qui concerne la file d'attente et le pool, je ne suis pas sûr d'avoir bien compris le concept, donc corrigez-moi si je me trompe. Ce que j'essaie de réaliser, c'est de traiter 2 demandes à la fois (la liste de données en contient 8 dans cet exemple), que dois-je utiliser? Pool pour créer 2 processus capables de gérer deux files d'attente différentes (2 au maximum) ou devrais-je simplement utiliser Queue pour traiter 2 entrées à chaque fois? Le verrou serait d'imprimer correctement les sorties.
import multiprocessing
import time
data = (['a', '2'], ['b', '4'], ['c', '6'], ['d', '8'],
['e', '1'], ['f', '3'], ['g', '5'], ['h', '7']
)
def mp_handler(var1):
for indata in var1:
p = multiprocessing.Process(target=mp_worker, args=(indata[0], indata[1]))
p.start()
def mp_worker(inputs, the_time):
print " Processs %s\tWaiting %s seconds" % (inputs, the_time)
time.sleep(int(the_time))
print " Process %s\tDONE" % inputs
if __name__ == '__main__':
mp_handler(data)