Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Rückgabewerte von Python-Threads abrufen?
Zugriff auf Rückgabewerte von Threads
Wenn Threads in Python erstellt werden, kann ihre Zielfunktion einen Wert zurückgeben. Das Abrufen dieses Rückgabewerts vom Hauptthread ist jedoch mit Standardmethoden nicht einfach.
Eine Möglichkeit besteht darin, ein veränderbares Objekt, z. B. eine Liste oder ein Wörterbuch, an den Thread zu übergeben und das Ergebnis in einem dafür vorgesehenen Slot zu speichern . Diese Methode erfordert die Übergabe zusätzlicher Argumente an den Thread und die Aufrechterhaltung der Verbindung zwischen dem Thread und dem Objekt.
Ein anderer Ansatz besteht darin, die Thread-Klasse in Unterklassen zu unterteilen und die Ausführungs- und Join-Methoden zu überschreiben. Bei der überschriebenen Ausführungsmethode wird der Rückgabewert der Zielfunktion in einem privaten Attribut innerhalb der Unterklasse gespeichert. Die überschriebene Join-Methode gibt den in diesem Attribut gespeicherten Wert zurück.
Hier ist ein Beispiel mit der ThreadWithReturnValue-Unterklasse:
class ThreadWithReturnValue(Thread): def __init__(self, group=None, target=None, name=None, args=(), kwargs={}, Verbose=None): Thread.__init__(self, group, target, name, args, kwargs) self._return = None def run(self): if self._target is not None: self._return = self._target(*self._args, **self._kwargs) def join(self, *args): Thread.join(self, *args) return self._return
So verwenden Sie diese Unterklasse:
twrv = ThreadWithReturnValue(target=foo, args=('world!',)) twrv.start() print(twrv.join()) # prints 'foo'
While Diese Methode ist effektiv, sie erfordert jedoch eine Anpassung der Thread-Klasse, was möglicherweise nicht in allen Szenarien wünschenswert ist. Letztendlich hängt der beste Ansatz von den spezifischen Bedürfnissen und Anforderungen der Anwendung ab.
Das obige ist der detaillierte Inhalt vonWie kann ich Rückgabewerte von Python-Threads abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!