【问题标题】:Dask: delayed vs futures and task graph generation [closed]Dask:延迟与期货和任务图生成[关闭]
【发布时间】:2019-06-11 10:13:36
【问题描述】:

我有几个关于 Dask 的基本问题:

  1. 当我想使用 dask 进行分布式计算(即在集群上)时,我必须使用 Futures 是否正确?
  2. 在这种情况下,即使用期货时,任务图是否仍然是推理计算的方式。如果是,我该如何创建它们。
  3. 一般情况下,我如何才能获得与任务图关联的字典,即无论是使用未来还是延迟工作?

作为编辑: 我的应用是我想在我的本地机器或集群上并行化一个 for 循环(即它应该在集群上工作)。

作为第二次编辑: 我想我也不太清楚 Futures 和延迟计算之间的关系。

谢谢

【问题讨论】:

    标签: python distributed-computing dask


    【解决方案1】:

    1) 是的。如果您通过网络发送数据,则必须有某种方式询问为您进行计算的计算机如何进行数字运算,而 Futures 或多或少准确地代表了这一点。

    2) 不。使用 Futures,您正在急切地执行函数 - 尽快启动计算,然后等待结果返回(来自本地的另一个线程/进程,或来自某个远程的您)已将工作卸载到)。这里的相关抽象是 Queque(特别是 Priority Queque)。

    3) 例如,对于延迟实例,您可以执行 some_delayed.dask,或者对于数组,Array.dask;可选地将整个内容包装在 dict() 或 vars() 中。不过,我不确定是否可以为每个 API 可靠地设置这种方式(我会假设是这样,但你知道他们对我们两个人的假设有何看法......)。

    4) 最简单的类比可能是:延迟本质上是一个花哨的 Python yield 对函数的包装器; Future 本质上是一个花哨的async/await 对函数的包装器。

    【讨论】:

    • 4) 中的好类比!
    猜你喜欢
    • 2013-07-25
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 2014-11-24
    • 2018-10-21
    • 2011-10-04
    • 2022-12-11
    相关资源
    最近更新 更多