Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Rückgabewerte von Python-Threads abrufen?

Wie kann ich Rückgabewerte von Python-Threads abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-17 06:10:26582Durchsuche

How Can I Retrieve Return Values from Python Threads?

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!

Stellungnahme:
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