Ich habe versucht, die Dokumentation unter http://docs.python.org/dev/library/multiprocessing.html zu lesen , habe aber immer noch Probleme mit der Mehrfachverarbeitung von Warteschlange, Pool und Sperre. Und jetzt konnte ich das folgende Beispiel erstellen.
In Bezug auf Warteschlange und Pool bin ich mir nicht sicher, ob ich das Konzept richtig verstanden habe. Korrigieren Sie mich also, wenn ich falsch liege. Was ich erreichen möchte, ist, 2 Anfragen gleichzeitig zu verarbeiten (Datenliste hat 8 in diesem Beispiel). Was soll ich also verwenden? Pool zum Erstellen von 2 Prozessen, die zwei verschiedene Warteschlangen verarbeiten können (maximal 2), oder sollte ich Queue verwenden, um jedes Mal 2 Eingaben zu verarbeiten? Die Sperre wäre, die Ausgaben korrekt zu drucken.
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)