迭代并计算多个dask数组

时间:2018-06-09 13:13:30

标签: python dask

我有多个dask数组,并希望一次使用imageio一帧保存到GIF或某种电影格式,但我认为这个问题很通用,解决方案可以帮助其他人。我想知道是否有办法按顺序计算阵列,在计算一个阵列并将其写入磁盘时,开始计算剩余工作人员的下一个阵列。如果可能的话,如果调度程序/图形可以在dask数组之间共享任务,那将是很好的。

代码在我眼中看起来像这样:

import dask.array as da
writer = Writer(...)
for dask_arr in da.compute([dask_arr1, dask_arr2, dask_arr3]):
    writer.write_frame(dask_arr)

看起来这可能是使用分布式调度程序的用户可以攻击的,但是如果可能的话我想使用线程调度程序。我也不确定这是否在我确切的现实世界案例中是非常有用的,因为内存使用或者可能不得不一次写入整个帧而不是块。我也不怀疑这可以在一个类似于自定义数组的对象中使用da.store处理......有些怎么做。

1 个答案:

答案 0 :(得分:0)

如果您能够编写一个接收数组切片然后正确写入的函数,那么您可以使用像map_blocks这样的函数。

如果您尝试写入随机访问难以保证的单个文件,这将变得更加复杂。

也许您可以使用main()将每个切片保存为单个图像,然后使用一些后处理工具将这些图像拼接在一起。

相关问题