我有一个要在正则表达式中搜索的熊猫数据框:
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)
那是为什么?该操作不是可并行化的吗?
答案 0 :(得分:0)
默认情况下,dask数据帧使用多线程调度程序。正则表达式计算可能不会释放GIL。您可能想尝试使用多处理调度程序。请参阅https://docs.dask.org/en/latest/scheduling.html