Befüllen Sie ein Wörterbuch parallel zur Mehrfachverarbeitung
Gestern habe ich eine Frage gestellt:Daten parallel zum Multiprozess lesen
Ich habe sehr gute Antworten bekommen und die in der Antwort erwähnte Lösung implementiert, die ich als richtig markiert habe.
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]
Allerdings dauert diese Lösung genauso lange, als würde ich einfach über @ iterierepeptide_kd.keys()
und füllen Sie dasDataFrames
Einer nach dem anderen. Warum ist das so? Gibt es eine Möglichkeit, die gewünschten Wörter parallel zu füllen und tatsächlich eine Geschwindigkeitssteigerung zu erzielen? Ich verwende es auf einem 48-Kern-HPC.