gpt4 book ai didi

python - Dask dataframe str.contains(regex=True) 不比 pandas 快

转载 作者:行者123 更新时间:2023-12-01 07:00:51 25 4
gpt4 key购买 nike

我有一个 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)

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

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

最佳答案

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

关于python - Dask dataframe str.contains(regex=True) 不比 pandas 快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58637323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com