用多处理并行填写词典

2024-09-28 21:36:42 发布

您现在位置:Python中文网/ 问答频道 /正文

昨天我问了一个问题:Reading data in parallel with multiprocess

我得到了很好的答案,并且我实现了我标记为正确的答案中提到的解决方案。

def read_energies(motif):
    os.chdir("blabla/working_directory")
    complx_ener = pd.DataFrame()
    # complex function to fill that dataframe 
    lig_ener = pd.DataFrame()
    # complex function to fill that dataframe 
    return motif, complx_ener, lig_ener

COMPLEX_ENERGIS = {}
LIGAND_ENERGIES = {}
p = multiprocessing.Pool(processes=CPU)
for x in p.imap_unordered(read_energies, peptide_kd.keys()):
    COMPLEX_ENERGIS[x[0]] = x[1]
    LIGAND_ENERGIES[x[0]] = x[2]

然而,这个解决方案所需的时间与我遍历peptide_kd.keys()并逐个填充DataFrames所需的时间相同。为什么会这样?有没有一种方法可以并行地完成所需的听写,并实际提高速度?我在一个48核的高性能计算机上运行。


Tags: to答案indataframereadthatfunction解决方案