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

前端之家收集整理的这篇文章主要介绍了python – Dask:非常低的CPU使用率和多线程?这是预期的吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

原文链接:https://www.f2er.com/python/438582.html

猜你在找的Python相关文章