Ich benutze Python 3.5, um eine Liste zu bearbeiten, die in diesem Fall predictions_dict['D']
ist und im Verzeichnis predictions_dict
enthalten ist. Dies ist der Code, den ich benutze:Abrufen einer leeren Liste beim Anhängen von Werten mit Multiprocessing
import multiprocessing as multip
predictions_dict = {'A': [],
'B': [],
'C': [],
'D': [],
'E': [],
'F': [],
'Def': []}
data = [{'index': 1, 'rank': 'A'}, {'index': 2, 'rank': 'D'}, {'index': 3, 'rank': 'E'}]
prediction = [(1, 'C'), (2, 'D'), (3, 'D')]
def create_predictions_dict(index, rank):
for j in data:
if j['index'] == index:
predictions_dict[rank].append((index, j['rank'], rank))
break
np = multip.cpu_count()
p = multip.Pool(processes=np)
_ = p.starmap(create_predictions_dict, prediction)
p.close()
p.join()
print('final list:', predictions_dict['D'])
wenn ich diesen Code ausführen, ich die Ausgabe zu erhalten ist:
final list: []
Und ich verstehe nicht, warum, wie ich bekommen würde erwarten:
final list: [(2, 'D', 'D'), (3, 'E', 'D')]
Ihre separaten Prozesse teilen nicht den Status. –
Wie korrigiere ich das? – Nadni
Es ist [nicht-trivial] (https://docs.python.org/3.6/library/multiprocessing.html#sharing-state-between-processes) –