【发布时间】:2021-12-25 06:42:44
【问题描述】:
我想并行化这段代码:
- "mean": float(zonal_extract.mean().compute()),
- "min": float(zonal_extract.min().compute()),
- "max": float(zonal_extract.max().compute()),
- "sum": float(zonal_extract.sum().compute()),
- "stddev": float(zonal_extract.std().compute()),
- "var": float(zonal_extract.var().compute()),
这是我第一次尝试在 python 中并行化某些东西,它不是被一遍又一遍地调用的同一个函数。这将是相同的数据,不同的功能。
尝试1
from dask import compute, delayed
results = delayed({})
results["mean"] = zonal_extract.mean
results["min"] = zonal_extract.min
results["max"] = zonal_extract.max
results["sum"] = zonal_extract.sum
results["stddev"] = zonal_extract.std
results["var"] = zonal_extract.var
results = compute(results, num_workers=4) # , scheduler='processes'
results = {k: float(v) for k, v in results.items()}
尝试2
mean, min, max, sum, stddev, var = compute(
zonal_extract.mean(),
zonal_extract.min(),
zonal_extract.max(),
zonal_extract.sum(),
zonal_extract.std(),
zonal_extract.var(),
num_workers=4,
) # , scheduler='processes'
results = {k: float(v) for k, v in dict(mean, min, max, sum, stddev, var).items()}
这似乎是一项简单的任务,但我找不到任何可行的方法。也许是因为我已经在多处理上下文和嵌套线程中(这可能是不存在但听起来很酷的东西)或者是错误:
L = Parallel(n_jobs=-1)(
File "/usr/local/lib/python3.9/dist-packages/joblib/parallel.py", line 1056, in __call__
self.retrieve()
File "/usr/local/lib/python3.9/dist-packages/joblib/parallel.py", line 935, in retrieve
self._output.extend(job.get(timeout=self.timeout))
File "/usr/local/lib/python3.9/dist-packages/joblib/_parallel_backends.py", line 542, in wrap_future_result
return future.result(timeout=timeout)
File "/usr/lib/python3.9/concurrent/futures/_base.py", line 445, in result
return self.__get_result()
File "/usr/lib/python3.9/concurrent/futures/_base.py", line 390, in __get_result
raise self._exception
TypeError: Delayed objects of unspecified length are not iterable
real 0m25.048s
user 0m46.943s
编辑:
哦,那是因为延迟函数覆盖了joblib的
from dask import compute, delayed
from joblib import Parallel, delayed
【问题讨论】:
-
如果某人有 1500 名声望,他们可以创建标签
rioxarray或python-rioxarray -
我觉得这个 SO 问题非常相似,但我不太理解 stackoverflow.com/questions/48728383/…
标签: python dask python-xarray