Меньше использования процессорных ядер в Dask - PullRequest
0 голосов
/ 05 июля 2018

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 ядер ЦП ни одно ядро ​​не использовало более 20%. Тем не менее, сумма использования всех ядер составила около 100 процентов. Возможно ли использование всех ядер более чем на 50 процентов, возможно с помощью dask? Если да, то как мне это сделать или изменить мой код для достижения цели?

Спасибо.

1 Ответ

0 голосов
/ 05 июля 2018

Планировщик по умолчанию для dask dataframe использует несколько потоков. Это правильный выбор для большинства вычислений панд, особенно векторизованных числовых операций, но не для всех.

Однако ваши вычисления в основном являются чистым кодом Python и поэтому будут зависеть от GIL. Я рекомендую использовать вместо этого многопроцессорный планировщик

res.compute(scheduler='processes')
...