python - skimage.util.apply_parallel 未按预期运行
问题描述
我正在尝试平铺图像并将计算并行应用于每个平铺。但它的行为不像我预期的那样。每当执行该功能时,我都会将其打印为“此处”,并且许多打印得很快,这表明它们正在同时启动。但是我的任务管理器中的 cpu 负载从未超过 100%,并且执行需要很长时间。有人可以建议吗?这是我第一次使用使用 Dask 的 skimage.util.apply_parallel。
from numpy import random, ones, zeros_like
from skimage.util import apply_parallel
def f3(im):
print('here')
for _ in range(10000):
u=random.random(100000)
return zeros_like(im)
if __name__=='__main__':
im=ones((2,4))
f = lambda img: f3(img)
im2=apply_parallel(f,im,chunks=1)
解决方案
我查看了源代码,apply_parallel 依赖于这个 Dask 命令:
res = darr.map_overlap(wrapped_func, depth, boundary=mode, dtype=dtype)
但是我发现它最后需要.compute('processes')
保证多个cpu。所以现在我只是使用 Dask 本身:
import dask.array as da
im2 = da.from_array(im,chunks=2)
proc = im2.map_overlap(f, depth=0).compute(scheduler='processes')
然后cpu使用率真的跳了!
推荐阅读
- javascript - 移动浏览器与桌面浏览器在加载 Web 应用程序方面有何不同?
- c# - 导入 Excel 文件并读取单元格
- java - 在 RestTemplate 中使用错误处理程序时可以使用 @Retry 和 @Recover 吗?
- menu - 我们在哪里写代码和在括号中调用的正确菜单?
- sql - 获取每组的第一条记录
- matlab - 如何以编程方式将 .mlapp 导出到 .m?
- javascript - 如何计算猫鼬中引用中具有字段的元素?
- c++ - 使用 push_back 向向量添加非空字符串,向量内容为空。为什么字符串没有添加到向量中?
- java - Android java发送JSON post请求,正文为空
- firebase-storage - 如何更改 Firebase 存储访问令牌以下载 url?