我试图并行化一个函数在熊猫数据帧上的应用。最简单的方法是:
pandarallel.initialize(progress_bar=True, verbose=0, use_memory_fs=True, nb_workers=2)
df.parallel_apply(lambda x: my_func(x['column1']), axis=1)然而,出于某种原因,公共图书馆似乎没有在我的情况下工作。因此,我正在考虑用pool.map()手动完成此操作:
def parallelize_dataframe(df, func, n_cores=2):
df_split = np.array_split(df, n_cores)
pool = Pool(n_cores)
df = pd.concat(pool.map(func, df_split))
pool.close()
pool.join()
return df
df = parallelize_dataframe(df, my_func, n_cores=2)但是,我不知道如何将pool.map()更改为只应用于'column1‘,以获得第2行中的等效代码。
my_func是一个函数,它可以从URL中获取图像并对其应用图像处理预测。
发布于 2021-12-17 18:37:20
尝试拆分df['column']而不是df
def parallelize_dataframe(df, func, n_cores=2):
df_split = np.array_split(df['column'], n_cores)
# added ^^^^^^^^^^
pool = Pool(n_cores)
df = pd.concat(pool.map(func, df_split))
pool.close()
pool.join()
return dfhttps://stackoverflow.com/questions/70397473
复制相似问题