Dask.bag.map\u分区函数接收生成器而不是lis

2024-10-06 11:44:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行一个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)似乎可以解决手头的问题,并使我的图形继续运行,但我觉得我可能缺少一些关于内部实现、优化和/或构建图形的方法的信息。你知道吗


Tags: namefrom图形mapfeaturedaskfuncbag
1条回答
网友
1楼 · 发布于 2024-10-06 11:44:19

是的,您的理解是正确的,dask包中的分区通常是有限生成器,而不是列表。这使得它们可以在更少的内存中运行。你知道吗

如果您希望始终与列表交互,那么您可以按照建议在输入上调用list,或者在操作之间调用map_partitions(list)调用。你知道吗

lazify_taskreify这样的优化通常被认为是内部的,可以随时更改。我不建议构建依赖它们的应用程序。这也是为什么它们没有被优先用于文档的部分原因。你知道吗

相关问题 更多 >