加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Dask:非常低的CPU使用率和多线程?这是预期的吗?

发布时间:2020-12-16 22:47:17 所属栏目:Python 来源:网络整理
导读:我在how to parallelize many (fuzzy) string comparisons using apply in Pandas?使用dask 基本上我做一些计算(没有写任何东西到磁盘)调用Pandas和Fuzzywuzzy(可能不会释放GIL显然,如果这有帮助),我运行如下: dmaster = dd.from_pandas(master,npartitions

我在how to parallelize many (fuzzy) string comparisons using apply in Pandas?使用dask

基本上我做一些计算(没有写任何东西到磁盘)调用Pandas和Fuzzywuzzy(可能不会释放GIL显然,如果这有帮助),我运行如下:

dmaster = dd.from_pandas(master,npartitions=4)
dmaster = dmaster.assign(my_value=dmaster.original.apply(lambda x: helper(x,slave),name='my_value'))
dmaster.compute(get=dask.multiprocessing.get)

但是,代码的变体现在已经运行了10个小时,并且还没有结束.我在Windows任务管理器中注意到了

> RAM利用率非常低,与我的数据大小相对应
> CPU使用率每2/3秒左右从0%反弹至最高5%
>我有大约20个大小为100MB的Python进程,以及一个可能包含30GB大小的数据的Python进程(我有一个128 GB的机器和8核CPU)

问题是:预期的行为是什么?在这里设置一些dask选项显然是非常错误的吗?

当然,我明白细节取决于我到底在做什么,但也许上面的模式已经可以说出某些事情是非常错误的?

非常感谢!!

最佳答案

Of course,I understand the specifics depends on what exactly I am doing,but maybe the patterns above can already tell that something is horribly wrong?

这是很好的选择.识别性能问题很棘手,尤其是在并行计算发挥作用时.以下是一些想到的事情.

>多处理调度程序必须在每次之间在不同进程之间移动数据.序列化/反序列化周期可能非常昂贵.使用distributed scheduler可以更好地处理这个问题.
>你的功能助手可能会做一些奇怪的事情.
>通常使用apply,即使在Pandas中,最好避免使用.

通常,解决这些问题的一个好方法是创建一个minimal,complete,verifiable example来分享其他人可以轻松复制和播放的内容.通常在创建这样的示例时,无论如何都能找到问题的解决方案.但是,如果这种情况至少发生,那么你可以将其转移给图书馆维护者.在创建这样的示例之前,大多数图书馆维护者都懒得花时间,几乎总是有太多细节特定于手头的问题以保证免费服务.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读