Arbiter is a task-scheduler that resolves task dependencies. Given a set of tasks and their dependencies, Arbiter will run the tasks such that no task is run before a dependency has already successfully run.
This package is a Julia port of Arbiter.
Arbiter.jl is available in METADATA. To install:
Pkg.add("Arbiter")
To create a task:
import Arbiter: ArbiterTask
task = ArbiterTask(name, func)
# A task with dependencies
dependent_task = ArbiterTask(name, func, (dependency1, dependency2))
To run tasks:
import Arbiter.Sync: run_tasks
results = run_tasks(tasks)
Tasks cannot currently be run asynchronously. That feature is waiting on the WIP unified Channel interface for threaded and parallel Julia.
Names are all casted to Symbol
s. Any value can be used as a name, but the
value returned in the results will be a Symbol
.
Nullable
s are used where Python may have had None, for type stability.
Various names have changed to become more Julian or avoid conflicts with existing functions or keywords.
Arbiter is provided under an MIT License.
08/19/2015
over 1 year ago
18 commits