繁体   English   中英

Dask dataframe str.contains(regex=True) 不快于 pandas

[英]Dask dataframe str.contains(regex=True) no faster than pandas

我有一个 pandas dataframe 我想正则表达式搜索:

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)

这是为什么? 这个操作不是可并行的吗?

更新:如果我使用client=Client()作为本地分布式集群的一部分运行它,那么它会并行化。 但是当我切换回独立模式时它不会。 我也试过设置scheduler='processes'但它的行为是一样的。

默认情况下,dask dataframe 使用多线程调度程序。 正则表达式计算可能不会释放 GIL。 您可能想尝试使用多处理调度程序。 请参阅https://docs.dask.org/en/latest/scheduling.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM