Ho provato a leggere la documentazione su http://docs.python.org/dev/library/multiprocessing.html ma sto ancora lottando con Queue, Pool e Locking multiprocessing. E per ora sono stato in grado di costruire l'esempio qui sotto.
Per quanto riguarda Queue and Pool, non sono sicuro di aver capito il concetto nel modo giusto, quindi correggimi se sbaglio. Quello che sto cercando di ottenere è elaborare 2 richieste alla volta (l'elenco dei dati ne ha 8 in questo esempio), quindi cosa dovrei usare? Pool per creare 2 processi in grado di gestire due diverse code (2 al massimo) o dovrei semplicemente usare Queue per elaborare 2 input ogni volta? Il blocco sarebbe quello di stampare correttamente le uscite.
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)