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