スレッドからの戻り値へのアクセス
スレッドが 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 サイトの他の関連記事を参照してください。