ホームページ >バックエンド開発 >Python チュートリアル >Python スレッドから戻り値を取得するにはどうすればよいですか?

Python スレッドから戻り値を取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-17 06:10:26579ブラウズ

How Can I Retrieve Return Values from Python Threads?

スレッドからの戻り値へのアクセス

スレッドが Python で作成されると、そのターゲット関数は値を返すことがあります。ただし、標準メソッドを使用してメイン スレッドからこの戻り値を取得するのは簡単ではありません。

1 つのオプションは、リストや辞書などの変更可能なオブジェクトをスレッドに渡し、その結果を指定されたスロットに格納することです。 。このメソッドでは、追加の引数をスレッドに渡し、スレッドとオブジェクト間の接続を維持する必要があります。

もう 1 つの方法は、Thread クラスをサブクラス化し、run メソッドと join メソッドをオーバーライドすることです。オーバーライドされた run メソッドでは、ターゲット関数の戻り値はサブクラス内のプライベート属性に格納されます。オーバーライドされた結合メソッドは、この属性に格納されている値を返します。

ThreadWithReturnValue サブクラスを使用する例を次に示します。

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

このサブクラスを使用するには:

twrv = ThreadWithReturnValue(target=foo, args=('world!',))

twrv.start()
print(twrv.join())  # prints 'foo'

whileこの方法は効果的ですが、Thread クラスのカスタマイズが必要ですが、これはすべてのシナリオで望ましいとは限りません。最終的に、最適なアプローチはアプリケーションの特定のニーズと要件によって異なります。

以上がPython スレッドから戻り値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。