'Args:
predictors (list): a list of OnlinePredictor avaiable to use.
batch_size (int): the maximum of an internal batch.'

def __init__(self, predictors, batch_size=5):

    assert len(predictors)
    self._need_default_sess = False
    for k in predictors:
        assert isinstance(k, OnlinePredictor), type(k)
        if (k.sess is None):
            self._need_default_sess = True
        assert (not k.return_input)
    self.input_queue = queue.Queue(maxsize=(len(predictors) * 100))
    self.threads = [PredictorWorkerThread(self.input_queue, f, id, batch_size=batch_size) for (id, f) in enumerate(predictors)]
    if six.PY2:
        import tornado.options as options
        options.parse_command_line(['--logging=debug'])
        logger.warn('MultiThreadAsyncPredictor    is    inefficient    in    Python    2!    Switch    to    Python    3    instead.')
