Heim > Backend-Entwicklung > Python-Tutorial > Wie rufe ich Rückgabewerte von multiprocessing.Process-Funktionen ab?

Wie rufe ich Rückgabewerte von multiprocessing.Process-Funktionen ab?

Patricia Arquette
Freigeben: 2024-11-29 06:30:12
Original
839 Leute haben es durchsucht

How to Retrieve Return Values from multiprocessing.Process Functions?

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

Nach dem Login kopieren

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
Nach dem Login kopieren

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

Nach dem Login kopieren

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())
Nach dem Login kopieren

Erläuterung:

  • Ein Multiprocessing-Manager ist Wird verwendet, um das gemeinsame Wörterbuch „return_dict“ zu erstellen.
  • Jeder Arbeitsprozess greift auf das gemeinsame „return_dict“ zu und speichert seinen Rückgabewert unter seiner Prozessnummer als Schlüssel.
  • Der Hauptprozess ruft das ab Rückgabewerte durch Zugriff auf die Werte des Wörterbuchs.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage