我正在运行一个dask图,它看起来像这样:
dask.bag.from_delayed(...).pluck(FEATURE_NAME).map(map_func).map_paritions(part_func)
我在执行part_func
时出错,结果是接收生成器而不是返回的包项map_func
。你知道吗
这感觉像是一个图形优化,我确实找到了lazify_task
,并且认为它与这个问题以及reify
图形节点(我找不到任何文档)有关。你知道吗
虽然在part_func
的开头添加一行values = list(values)
似乎可以解决手头的问题,并使我的图形继续运行,但我觉得我可能缺少一些关于内部实现、优化和/或构建图形的方法的信息。你知道吗
是的,您的理解是正确的,dask包中的分区通常是有限生成器,而不是列表。这使得它们可以在更少的内存中运行。你知道吗
如果您希望始终与列表交互,那么您可以按照建议在输入上调用
list
,或者在操作之间调用map_partitions(list)
调用。你知道吗像
lazify_task
和reify
这样的优化通常被认为是内部的,可以随时更改。我不建议构建依赖它们的应用程序。这也是为什么它们没有被优先用于文档的部分原因。你知道吗相关问题 更多 >
编程相关推荐