Runners#

Dask Runner#

class canproc.runners.dask.DaskRunner(scheduler: Literal['threads', 'processes', 'single-threaded', 'syncronous'] = 'threads')#

Use dask to run a directed acyclic graph

scheduler#
Type:

Callable

Examples

>>> from canproc.runners import DaskRunner
>>> from canproc import DAG, DAGProcess
>>> dag = DAG(dag=[DAGProcess(name='array', function='np.arange', args=[0, 10])], output='array')
>>> runner = DaskRunner()
>>> array = runner.run(dag)

Dask Distributed Runner#

class canproc.runners.distributed.DaskDistributedRunner(processes=True, workers=1, threads_per_worker=1, **kwargs)#

Use dask distributed to run a directed acyclic graph. Memory is distributed equally over the workers so is recommended to reduce workers if memory issues arise.

scheduler#
Type:

Callable

client#
Type:

Dask client

cluster#
Type:

Dask cluster

Examples

>>> from canproc.runners import DaskDistributedRunner
>>> from canproc import DAG, DAGProcess
>>> dag = DAG(dag=[DAGProcess(name='array', function='np.arange', args=[0, 10])], output='array')
>>> runner = DaskDistributedRunner()
>>> array = runner.run(dag)