Próbowałem przeczytać dokumentację pod adresem http://docs.python.org/dev/library/multiprocessing.html, ale wciąż mam problemy z kolejką, pulą i blokowaniem wieloprocesorowym. I na razie udało mi się zbudować poniższy przykład.
Jeśli chodzi o kolejkę i pulę, nie jestem pewien, czy dobrze zrozumiałem koncepcję, więc popraw mnie, jeśli się mylę. To, co próbuję osiągnąć, to przetworzyć 2 żądania naraz (lista danych ma 8 w tym przykładzie), więc czego powinienem użyć? Pula, aby utworzyć 2 procesy, które mogą obsługiwać dwie różne kolejki (maksymalnie 2), czy powinienem po prostu użyć kolejki do przetwarzania 2 danych wejściowych za każdym razem? Blokada polegałaby na poprawnym wydrukowaniu wyjść.
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)