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
......有些方式。
解决方案
如果您能够编写一个函数,该函数接受数组的一部分,然后适当地编写它,您也许可以使用类似da.map_blocks
.
如果您尝试写入一个随机访问更难保证的文件,这将变得更加复杂。
也许您可以使用map_blocks
将每个切片保存为单个图像,然后使用一些后处理工具将这些图像拼接在一起。
推荐阅读
- python - 如何从字典中的随机列表中选择随机项目
- c++ - 为什么windbg 不能在内核模式转储中显示我的用户模式调用堆栈?
- flutter - 提供 AnimatedSwitcher Flutter
- python - Pandas 将所有列转换为数据条目并为其当前值创建新列
- android - 从 mikepenz 材料抽屉中的数组中获取配置文件项目
- bash - 只能使用 bash -x 运行脚本
- c# - C# 中的文件复制问题,不支持给定路径的格式
- xamarin - 添加新视图控制器不会创建 XIB 文件
- javascript - 按钮不起作用并更改边框颜色
- python - 如何创建没有内存错误的大矩阵?