Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在多个dask数组上迭代和计算_Python_Dask - Fatal编程技术网

Python 在多个dask数组上迭代和计算

Python 在多个dask数组上迭代和计算,python,dask,Python,Dask,我有多个dask阵列,希望使用imageio一次一帧将它们保存为GIF或某种电影格式,但我认为这个问题非常普遍,解决方案可以帮助其他人。我想知道是否有一种方法可以按顺序计算数组,在计算一个数组并将其写入磁盘时,开始在剩余的工作线程上计算下一个数组。如果可能的话,如果调度器/图形能够在dask阵列(如果有的话)之间共享任务就好了 在我看来,代码是这样的: import dask.array as da writer = Writer(...) for dask_arr in da.compute(

我有多个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
…的对象。

如果您能够编写一个函数,该函数接收数组的一部分,然后适当地写入它,那么您可能能够使用
da.map\u blocks
之类的函数

如果您试图写入一个难以保证随机访问的文件,那么这将变得更加复杂


也许您可以使用
map\u blocks
将每个切片保存为单个图像,然后使用一些后处理工具将这些图像缝合在一起。

是的,后处理方法是显而易见的解决方法。出于这个目的,我希望避免使用它,如果以后不必调用命令行工具,它会使我的代码更具python风格@Mrocklin您认为我有可能将此功能添加到dask的现有功能中吗?或者您认为这需要对调度器/图形代码进行重大更改吗?我还不清楚您上面的建议。我建议你提出一个问题。你可能想ping
@jakirkham
,他可能对这样的主题感兴趣。参考:在上面链接的github问题上找到了一个解决方案。我会接受这个答案,因为我知道Matt只是为了名誉才做stackoverflow的。