So rufen Sie Rückgabewerte von an multiprocessing.Process übergebenen Funktionen ab
Bei der Übergabe einer Funktion an multiprocessing.Process ist dies häufig erforderlich Rufen Sie den Rückgabewert der Funktion ab. Allerdings sind diese Werte in den zurückgegebenen Prozessobjekten nicht ohne weiteres zugänglich.
Bedenken Sie den folgenden Code:
import multiprocessing
def worker(procnum):
'''worker function''' print str(procnum) + ' represent!' return procnum
if Name == '__main__':
jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i,)) jobs.append(p) p.start() for proc in jobs: proc.join() print jobs
Die erwarteten Rückgabewerte sind nicht über die Prozessobjekte in „Jobs“ verfügbar.
Lösung: Verwendung einer gemeinsam genutzten Variablen
Um die Rückgabewerte abzurufen, kann eine gemeinsam genutzte Variable verwendet werden, um die Kommunikation zwischen dem Hauptprozess und den Arbeitsprozessen zu ermöglichen.
Importieren Multiprocessing
def worker(procnum, return_dict):
"""worker function""" print(str(procnum) + " represent!") return_dict[procnum] = procnum
if name == "__main__":
manager = multiprocessing.Manager() return_dict = manager.dict() jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i, return_dict)) jobs.append(p) p.start() for proc in jobs: proc.join() print(return_dict.values())
Erläuterung:
Das obige ist der detaillierte Inhalt vonWie rufe ich Rückgabewerte von multiprocessing.Process-Funktionen ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!