如何在Dask任务图中迭代集合
我有下面的任务图如何在Dask任务图中迭代集合,dask,Dask,我有下面的任务图 def getdocs(): return [doc1,doc2] def tosents(doc): return doc.split(".") # Except doc is a list of docs def towords(sent): return sent.split(" ") graph = { "documents": (getdocs,), "sentences": (tosents,"documents"
def getdocs():
return [doc1,doc2]
def tosents(doc):
return doc.split(".") # Except doc is a list of docs
def towords(sent):
return sent.split(" ")
graph = {
"documents": (getdocs,),
"sentences": (tosents,"documents"),
"words": (towords, "sentences")
}
每个任务都返回一个列表,但我希望这些结果与接收函数并行,接收函数应该只接受一个值(例如字符串)。目前,结果正在传递
我如何指示要通过接收函数枚举的结果?使用收益率
感谢您的高级指导。人们构建自己的Dask图是不寻常的,因为
延迟的
接口非常容易使用。如果你有一个函数,它返回一个已知数量的输出,你想单独处理(即并行操作),你可以这样做
ddocs = delayed(getdocs, nout=2)
sentences = [delayed(tosentences)(doc) for doc in ddocs()]
其中,tosentences
将一张单据作为输入。句子的每个元素都是一个延迟对象,有自己的图形。如果将它们一起传递到compute()
,则可以并行计算它们
-编辑-
ddoc
需要调用;您不能迭代延迟函数,但可以迭代它生成的延迟对象。谢谢。是的,我想看看我是否可以用一种近乎声明的方式来构建任务图。以编程方式进行,虽然易于编程,但与声明式方法相比有其缺点。那么在你的例子中,我还能想象“句子”并在那一点上得到完整的任务图吗?它确实会作为一个整体崩溃。我想构建任务图,并最终以数据驱动的方法将其可视化。我尝试了您的示例,但它不起作用。TypeError:未指定长度的延迟对象不可编辑