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

Python Dask dataframe str.contains(regex=True)不比pandas快,python,pandas,dataframe,dask,Python,Pandas,Dataframe,Dask,我有一个要在其中进行正则表达式搜索的pandas数据框: df[df['material'].str.contains(r'\baluminum\b',regex=True)] 我假设这将与Dask并行,但它不会带来性能改进: 导入dask.dataframe作为dd ddf=dd.from_熊猫(df,npartitions=8) dask.config.set(scheduler=dask.multiprocessing.get) #熊猫DF %timeit df[df['material

我有一个要在其中进行正则表达式搜索的pandas数据框:

df[df['material'].str.contains(r'\baluminum\b',regex=True)]
我假设这将与Dask并行,但它不会带来性能改进:

导入dask.dataframe作为dd
ddf=dd.from_熊猫(df,npartitions=8)
dask.config.set(scheduler=dask.multiprocessing.get)
#熊猫DF
%timeit df[df['material'].str.contains(r'\baluminum\b',regex=True)]
每个回路23.7 s±571 ms(7次运行的平均值±标准偏差,每个回路1次)
#达斯克DF
%timeit ddf[ddf['material'].str.contains(r'\baluminum\b',regex=True)].compute()
每个回路25.6 s±1.25 s(7次运行的平均值±标准偏差,每个回路1次)
为什么呢?这个操作不是可并行化的吗


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

默认情况下,dask数据帧使用多线程调度程序。正则表达式计算可能不会释放GIL。您可能希望尝试使用多处理调度程序。请参见

入站数据框的形状是什么?Yiu在分块和将分块传输到子流程方面有相当大的开销。形状是(1507789,10)你让它工作了吗?尝试了同样的方法,但它不会并行化否,问题仍然悬而未决。我正在使用多处理调度程序:
dask.config.set(scheduler=dask.multiprocessing.get)