昨天我提了一个问题:使用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核HPC上运行它。
read_energies()
每次处理可变数量的数据框,可以使您调整到优势点。 - martineau