减少CPU内核利用率

时间:2018-07-05 06:20:36

标签: python dask

Screenshot of Utilization of all cores while executing the code我正在使用Dask DataFrame并行化以下正则表达式搜索代码。

ddf = dd.from_pandas(in_desc, npartitions=16)
def r_s(dataframe1):
    for vals in dataframe1:
        for regex in dataframe.values:
            if(re.search(regex[0], vals)):
                pass
res = ddf.map_partitions(r_s, meta=ddf)
res.compute()

in_desc和dataframe1是两个熊猫数据帧。

在使用mpstat -P ALL 1检查内核利用率时,我注意到在16个CPU内核中,没有一个内核的利用率超过20%。但是,所有内核的利用率之和约为100%。 使用dask是否可以将所有内核的利用率提高到50%以上?如果是,那么我应该怎么做或修改我的代码来完成任务?

谢谢。

1 个答案:

答案 0 :(得分:1)

dask数据框的默认调度程序使用多个线程。这是大多数熊猫计算的正确选择,尤其是矢量化数值运算,但不是全部。

但是,您的计算大部分是纯Python代码,因此会受到GIL的影响。我建议您改为使用多处理调度程序

res.compute(scheduler='processes')