datasets = {}
datasets['df1'] = df1
datasets['df2'] = df2
datasets['df3'] = df3
datasets['df4'] = df4
def prepare_dataframe(dataframe):
return dataframe.apply(lambda x: x.astype(str).str.lower().str.replace('[^\w\s]', ''))
for key, value in datasets.items():
datasets[key] = prepare_dataframe(value)
我需要在一些数据帧中准备数据以供进一步分析。我想并行化用于使用准备好的数据帧更新字典的for循环。此代码最终将在具有数十个内核和数千个数据帧的计算机上运行。在我的本地计算机上,我似乎没有在prepare_dataframe函数中使用多个核心。
我看过Numba和Joblib,但我找不到在两个库中使用字典值的方法。
非常感谢任何见解!
答案 0 :(得分:1)
您可以使用multiprocessing
库。您可以阅读其基础知识here。
以下代码可以满足您的需求:
from multiprocessing import Pool
def prepare_dataframe(dataframe):
# do whatever you want here
# changes made here are *not* global
# return a modified version of what you want
return dataframe
def worker(dict_item):
key,value = dict_item
return (key,prepare_dataframe(value))
def parallelize(data, func):
data_list = list(data.items())
pool = Pool()
data = dict(pool.map(func, data_list))
pool.close()
pool.join()
return data
datasets = parallelize(datasets,worker)