dask可以在无止境的流式输入下工作吗

dask可以在无止境的流式输入下工作吗,dask,Dask,我知道dask在这样的批处理模式下工作得很好 def load(filename): ... def clean(data): ... def analyze(sequence_of_data): ... def store(result): with open(..., 'w') as f: f.write(result) dsk = {'load-1': (load, 'myfile.a.data'), 'load-2':

我知道dask在这样的批处理模式下工作得很好

def load(filename):
    ...

def clean(data):
    ...

def analyze(sequence_of_data):
    ...

def store(result):
    with open(..., 'w') as f:
        f.write(result)

dsk = {'load-1': (load, 'myfile.a.data'),
       'load-2': (load, 'myfile.b.data'),
       'load-3': (load, 'myfile.c.data'),
       'clean-1': (clean, 'load-1'),
       'clean-2': (clean, 'load-2'),
       'clean-3': (clean, 'load-3'),
       'analyze': (analyze, ['clean-%d' % i for i in [1, 2, 3]]),
       'store': (store, 'analyze')}

from dask.multiprocessing import get
get(dsk, 'store')  # executes in parallel
  • 我们是否可以使用dask来处理数据流通道,其中数据块的数量是未知的,甚至是无限的
  • 它可以以增量方式执行计算。例如,上面的“分析”步骤可以处理正在进行的块吗
  • 我们必须在所有数据块都已知后才调用“get”操作,我们可以在“get”被调用后添加新的数据块吗

  • 编辑:参见下面更新的答案

    不 dask中的当前任务调度器需要一个计算图。它不支持在此图表中动态添加或删除。调度器设计用于在少量内存中计算大型图;提前了解整个图表对于这一点至关重要

    但是,这并不能阻止创建具有不同属性的其他调度程序。这里一个简单的解决方案就是在一台机器或多台机器上使用一个模块

    实际上是的 分布式调度程序现在完全异步运行,您可以在计算期间提交任务、等待其中一些任务、提交更多任务、取消任务、添加/删除工作进程等。有几种方法可以做到这一点,但最简单的可能是这里简要介绍的新的
    concurrent.futures
    接口: