我有一个简单的清理函数,可以从数据框(以及其他预处理内容)中删除特殊字符。我的数据集非常庞大,我想利用多处理来提高性能。我的想法是将数据集分成块并在每个块上并行运行这个更清晰的函数。 我使用了dask库以及python的多处理模块。但是,似乎应用程序卡住了,并且比使用单核运行花费的时间更长。
这是我的代码:
from multiprocessing import Pool
def parallelize_dataframe(df, func):
df_split = np.array_split(df, num_partitions)
pool = Pool(num_cores)
df = pd.concat(pool.map(func, df_split))
pool.close()
pool.join()
return df
def process_columns(data):
for i in data.columns:
data[i] = data[i].apply(cleaner_func)
return data
mydf2 = parallelize_dataframe(mydf, process_columns)
我可以从资源监视器中看到正在使用所有核心,但正如我之前所说,应用程序被卡住了。
P.S。 我在Windows Server 2012(运行问题)上运行了这个。在unix环境中运行此代码,我实际上能够从多处理库中看到一些好处。
提前致谢。