Wie verwende ich das Multiprozessierungsmodul mit voneinander abhängigen Aufgaben?Python

Python-Programme
Anonymous
 Wie verwende ich das Multiprozessierungsmodul mit voneinander abhängigen Aufgaben?

Post by Anonymous »

Die vorhandenen Beispiele der Multiprocessing -module gehen davon aus, dass die Aufgaben unabhängig sind, aber meine Situation ist "haariger". Diese werden in Boxes von 50-100 Widgets pro Box verpackt. Die Verarbeitungszeiten können stark variieren ...
Alle Boxen sind völlig unabhängig voneinander. Alle Widgets in einem Box sind auch unabhängig, außer , jeweils hängt von dem ersten Widget aus demselben Box ab. Durch alle -Boxen sendet das erste widget von jedem an die Verarbeitung. Sobald ein Box 'erstes Widget fertig ist, würde ich alle verbleibenden Widgets aus dem Box einreichen. Im Folgenden finden Sie den vereinfachten Code, der die ersten Widgets aus jedem Feld zur Verarbeitung sendet.

Code: Select all

def widgetLoop(taskQueue, resultQueue):
while True:
task = taskQueue.get()
start = resource.getrusage(resource.RUSAGE_SELF)[0]
result = process(*task)
finish = resource.getrusage(resource.RUSAGE_SELF)[0]
logger.info("Processed %s in %g", task, finish - start)
resultQueue.put(result)

tasks = multiprocessing.Queue()
results = multiprocessing.Queue()

p = multiprocessing.Pool(None, widgetLoop, (tasks, results))
Pending = {}

with open(sys.argv[1]) as boxes:
for box in boxes:
(first, *rest) = box
tasks.put(*first)
Pending[first] = *rest
Wie ordne ich die Verarbeitung der Ergebnisse im Hauptprozess auf, damit ein Box 'verbleibende Widgets zu den Aufgaben hinzugefügt werden -queue, sobald das erste Widget der Box' Erstes Widget verarbeitet wird? Gibt es eine schöne pythonische Art, das alles zu tun?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post