Ho una funzione che esegue alcune simulazioni e restituisce una matrice in formato stringa.Elaborazione multipla Python - monitoraggio del processo di funzionamento pool.map
Desidero eseguire la simulazione (la funzione) per variando i valori dei parametri di input, oltre 10000 valori di input possibili, e scrivere i risultati in un singolo file.
Sto usando multiprocessing, in particolare, la funzione pool.map per eseguire le simulazioni in parallelo.
Poiché l'intero processo di esecuzione della funzione di simulazione oltre 10000 volte richiede molto tempo, mi piacerebbe davvero monitorare il processo dell'intera operazione.
Penso che il problema nel mio codice corrente di seguito sia che, pool.map esegue la funzione 10000 volte, senza alcun tracciamento del processo durante tali operazioni. Una volta che l'elaborazione parallela ha terminato l'esecuzione di 10000 simulazioni (potrebbe essere di ore in giorni.), Quindi continuo a tenere traccia quando 10000 risultati di simulazione vengono salvati in un file. Quindi non si tratta proprio dell'elaborazione dell'operazione pool.map.
C'è una soluzione facile al mio codice che consentirà il tracciamento del processo?
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!!!!')
grazie mille! – user32147