class_docstr: Gather indexed data from a data queue, and produce results with the
  original index-based order.
docstr: Args:
      data_queue(mp.Queue): a queue which contains datapoints.
      nr_producer(int): number of producer processes. This process will
          terminate after receiving this many of :class:`DIE` sentinel.
      start(int): the rank of the first object
docstr_tok: ["Args",":","data_queue","(","mp.Queue",")",":","a","queue","which","contains","datapoints",".","nr_producer","(","int",")",":","number","of","producer","processes",".","This","process","will","terminate","after","receiving","this","many","of",":","class",":","`","DIE","`","sentinel",".","start","(","int",")",":","the","rank","of","the","first","object"]
code: def __init__(self, data_queue, nr_producer, start=0):
      """
      Args:
          data_queue(mp.Queue): a queue which contains datapoints.
          nr_producer(int): number of producer processes. This process will
              terminate after receiving this many of :class:`DIE` sentinel.
          start(int): the rank of the first object
      """
      super(OrderedResultGatherProc, self).__init__()
      self.data_queue = data_queue
      self.ordered_container = OrderedContainer(start=start)
      self.result_queue = mp.Queue()
      self.nr_producer = nr_producer
  
imports: import sys
  import atexit
  import bisect
  import multiprocessing
  import platform
  import signal
  import threading
  import weakref
  from contextlib import contextmanager
  import six
  from six.moves import queue
  import subprocess
  from .None import logger
  from .argtools import log_once
label_desc: Use image node_id 1 to create a new OrderedResultGatherProc object from inherited base classes: mp with example: obj = OrderedResultGatherProc(data_queue, nr_producer, start)