Dask dataframe str.contains (regex = True) не быстрее, чем pandas - PullRequest
1 голос
/ 31 октября 2019

У меня есть фрейм данных pandas, в котором я хочу выполнить поиск в регулярном выражении:

df[df['material'].str.contains(r'\baluminum\b', regex=True)]

Я предполагал, что это можно распараллелить с Dask, но это не приведет к улучшению производительности:

import dask.dataframe as dd
ddf = dd.from_pandas(df, npartitions=8)
dask.config.set(scheduler=dask.multiprocessing.get)

# Pandas DF
%timeit df[df['material'].str.contains(r'\baluminum\b', regex=True)]
23.7 s ± 571 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

# Dask DF
%timeit ddf[ddf['material'].str.contains(r'\baluminum\b',regex=True)].compute()
25.6 s ± 1.25 s per loop (mean ± std. dev. of 7 runs, 1 loop each)

Почемув том, что? Разве эта операция не распараллеливается?

1 Ответ

0 голосов
/ 31 октября 2019

По умолчанию dask dataframe использует многопоточный планировщик. Вычисления Regex, вероятно, не выпускают GIL. Возможно, вы захотите попробовать планировщик мультиобработки вместо этого. Пожалуйста, смотрите https://docs.dask.org/en/latest/scheduling.html

...