避免如何避免重新计算事物

时间:2018-11-20 11:30:26

标签: python dask dask-distributed

我使用dask定义了很长的计算流程;在给定的api和版本约束下,在某些时候,我需要计算一些小的结果(不是惰性的)并将其提供给惰性操作。我的问题是,此时将执行整个计算图,以便产生中间结果。在下一步将最终结果存储到磁盘时,是否有一种方法可以不松开此时所做的工作,而必须重新计算所有内容?

是否正在使用persist来解决这个问题?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

是的,这是persist用于的用例。诀窍是弄清楚在哪里应用它-该决定通常受以下因素影响:

  • 中间结果的大小。这些将保留在内存中,直到所有对它们的引用都被删除(例如foo中的foo = intermediate.persist())。
  • 图形的形状。最好只保留那些需要重新计算的组件,以最大程度地减少保留值对内存的影响。您可以使用.visualize()查看图表。
  • 计算任务所花费的时间。如果任务可以快速计算,那么重新计算它们而不是将它们保留在内存中可能会更有益。