':param bears:
The bear instances to run.
:param result_callback:
A callback function which is called when results are available.
Must have following signature::
def result_callback(result):
pass
:param executor:
Custom executor used to run the bears. If ``None``, a
``ProcessPoolExecutor`` is used using as many processes as cores
available on the system.'

def __init__(self, bears, result_callback, executor=None):

    self.bears = bears
    self.result_callback = result_callback
    self.event_loop = asyncio.SelectorEventLoop()
    self.executor = (concurrent.futures.ProcessPoolExecutor() if (executor is None) else executor)
    self.running_tasks = {}
    (self.dependency_tracker, self.bears_to_schedule) = initialize_dependencies(self.bears)
