更新字典值时应用并行化


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('[^ws]', ''))
for key, value in datasets.items():
    datasets[key] = prepare_dataframe(value)

我需要在某些数据范围内准备数据以进行进一步分析。我想并行化将词典用准备好的数据帧更新字典的for循环。该代码最终将在具有数十个内核和数千个数据范围的计算机上运行。在我的本地计算机上,我似乎在prepar_dataframe函数中使用的不超过单个核心。

我看过Numba和Joblib,但是我找不到一种在任一个库中使用字典值的方法。

任何洞察力都将不胜感激!

您可以使用multiprocessing库。您可以在此处阅读有关其基础知识的信息。
这是执行您需要的代码:

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)

最新更新