Run a learner synchronously in an executor.

Parameters
• learner (BaseLearner instance) –

• goal (callable) – The end condition for the calculation. This function must take the learner as its sole argument, and return True when we should stop requesting more points.

• executor (concurrent.futures.Executor, distributed.Client, mpi4py.futures.MPIPoolExecutor, ipyparallel.Client or loky.get_reusable_executor, optional) – The executor in which to evaluate the function to be learned. If not provided, a new ProcessPoolExecutor on Linux, and a loky.get_reusable_executor on MacOS and Windows.

• ntasks (int, optional) – The number of concurrent function evaluations. Defaults to the number of cores available in executor.

• log (bool, default: False) – If True, record the method calls made to the learner by this runner.

• shutdown_executor (bool, default: False) – If True, shutdown the executor when the runner has completed. If executor is not provided then the executor created internally by the runner is shut down, regardless of this parameter.

• retries (int, default: 0) – Maximum amount of retries of a certain point x in learner.function(x). After retries is reached for x the point is present in runner.failed.

• raise_if_retries_exceeded (bool, default: True) – Raise the error after a point x failed retries.

learner#

The underlying learner. May be queried for its state.

Type

BaseLearner instance

log#

Record of the method calls made to the learner, in the format (method_name, *args).

Type

list or None

to_retry#

List of (point, n_fails). When a point has failed runner.retries times it is removed but will be present in runner.tracebacks.

Type

list of tuples

tracebacks#

List of of (point, tb) for points that failed.

Type

list of tuples

pending_points#

A list of tuples with (concurrent.futures.Future, point).

Type

list of tuples

elapsed_time : callable

A method that returns the time elapsed since the runner was started.

The overhead in percent of using Adaptive. This includes the overhead of the executor. Essentially, this is 100 * (1 - total_elapsed_function_time / self.elapsed_time()).