MCPcopy Index your code
hub / github.com/tensorpack/tensorpack / OrderedResultGatherProc

Class OrderedResultGatherProc

tensorpack/utils/concurrency.py:318–358  ·  view source on GitHub ↗

Gather indexed data from a data queue, and produce results with the original index-based order.

Source from the content-addressed store, hash-verified

316
317
318class OrderedResultGatherProc(mp.Process):
319 """
320 Gather indexed data from a data queue, and produce results with the
321 original index-based order.
322 """
323
324 def __init__(self, data_queue, nr_producer, start=0):
325 """
326 Args:
327 data_queue(mp.Queue): a queue which contains datapoints.
328 nr_producer(int): number of producer processes. This process will
329 terminate after receiving this many of :class:`DIE` sentinel.
330 start(int): the rank of the first object
331 """
332 super(OrderedResultGatherProc, self).__init__()
333 self.data_queue = data_queue
334 self.ordered_container = OrderedContainer(start=start)
335 self.result_queue = mp.Queue()
336 self.nr_producer = nr_producer
337
338 def run(self):
339 nr_end = 0
340 try:
341 while True:
342 task_id, data = self.data_queue.get()
343 if task_id == DIE:
344 self.result_queue.put((task_id, data))
345 nr_end += 1
346 if nr_end == self.nr_producer:
347 return
348 else:
349 self.ordered_container.put(task_id, data)
350 while self.ordered_container.has_next():
351 self.result_queue.put(self.ordered_container.get())
352 except Exception as e:
353 import traceback
354 traceback.print_exc()
355 raise e
356
357 def get(self):
358 return self.result_queue.get()

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…