Ich habe eine Funktion, die einige Simulationen durchführt und gibt ein Array im String-Format.Python Multiprocessing - verfolgen den Prozess der pool.map Operation
Ich möchte die Simulation (die Funktion) für variierende Eingangsparameterwerte, über 10000 mögliche Eingabewerte, ausführen und die Ergebnisse in eine einzige Datei schreiben.
Ich verwende Multiprocessing, speziell pool.map Funktion , um die Simulationen parallel zu laufen.
Da der gesamte Prozess der Ausführung der Simulationsfunktion über 10000 mal eine sehr lange Zeit dauert, möchte ich wirklich den Prozess der gesamten Operation verfolgen.
Ich denke, das Problem in meinem aktuellen Code unten ist, dass pool.map die Funktion 10000 mal ohne Prozessverfolgung während dieser Vorgänge ausführt. Sobald die parallele Verarbeitung 10000 Simulationen (das können Stunden bis Tage sein) abgeschlossen ist, werde ich verfolgt, wenn 10000 Simulationsergebnisse in einer Datei gespeichert werden. Dies verfolgt nicht wirklich die Verarbeitung von pool.map.
Gibt es eine einfache Lösung für meinen Code, die Prozessverfolgung ermöglicht?
def simFunction(input):
# Does some simulation and outputs simResult
return str(simResult)
# Parallel processing
inputs = np.arange(0,10000,1)
if __name__ == "__main__":
numCores = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes = numCores)
t = pool.map(simFunction, inputs)
with open('results.txt','w') as out:
print("Starting to simulate " + str(len(inputs)) + " input values...")
counter = 0
for i in t:
out.write(i + '\n')
counter = counter + 1
if counter%100==0:
print(str(counter) + " of " + str(len(inputs)) + " input values simulated")
print('Finished!!!!')
vielen dank! – user32147