【发布时间】:2019-11-02 03:28:41
【问题描述】:
我正在尝试使用 Dask.delayed 来并行计算一个函数。 函数 BL.BLSN 有 1 个参数,它是一个字符串。
runs=['forcing.dat','forcing.dat','forcing.dat','forcing.dat','forcing.dat','forcing.dat']
dfs = [delayed(BL.BLSN)(fn) for fn in runs]
当我打印 dfs 时,我会得到一个延迟对象的列表。这是我所期待的。
[延迟('BLSN-630cb6bf-7104-4d41-b5fb-544116fec7ed'), 延迟('BLSN-150a5d45-073a-48af-af03-6e85f809617c'), 延迟('BLSN-484e7d71-af09-4a1f-be28-42358ef745e9'), 延迟('BLSN-2f2f2cc1-76bc-4c29-839d-091255556f35'), 延迟('BLSN-8aae0a06-d607-4a98-89a7-cfd2c877bf11'), 延迟('BLSN-f0131a69-2bfd-4153-94c1-2d3ef4973772')
]
但是,当我尝试时:
dfs.compute()
我明白了:
AttributeError: 'list' object has no attribute 'compute'
让计算对列表中的每个对象进行操作的最佳方法是什么?
【问题讨论】:
-
您有一个延迟对象列表,因为您使用的是列表推导。致电
compute或查看@mdurant 的回答 -
如果你按顺序调用compute(),你会等待每个结果,不会遇到任何并行性
标签: python parallel-processing dask