Ich führe Multiprocessing, um meine Optimierungszeit für mehrere Perioden zu verkürzen.Python-Multiprocessing funktioniert nicht, während For-Schleife funktioniert
Bevor ich For-Schleife verwendete, die schnell ist, wenn meine Daten nicht groß sind.
Die Optimierungsfunktion gibt das optimierte Ergebnis an eine CSV-Datei aus.
Allerdings, wenn ich es zu
geändertif __name__=='__main__':
pool = mp.Pool(mp.cpu_count()-1)
for date in DatesOpt:
x = X.loc[X['Date'] == np.int(date)].drop('Date',1)
f = F.loc[F['Date'] == np.int(date)].drop('Date',1)
d = D.loc[D['Date'] == np.int(date)].drop('Date',1)
r = R.loc[R['Date'] == np.int(date)].drop('Date',1)
pool.apply_async(optimize,args=(date,x,f,d,r,))
print('Waiting for all subprocesses done')
pool.close()
print('Pool Closed')
pool.join()
print('All subprocess done.')
alles hält nur am „Pool Closed“ ausgegeben und der Optimierer nie endet.
Gibt es ein Problem mit diesem Code?
Dank Daniel. Ich habe versucht, die Methode und ein Fehler sagt: pool.join() Datei "D: \ Anaconda \ lib \ Multiprozessing \ pool.py", Linie 509, in assert self._state mitmachen (CLOSE, BEENDEN) AssertionError – Elaine