Pythonでマルチスレッディングを行う際、スレッドからデータを返却する方法はいくつかあります。ここでは、その中でも主に使用される2つの方法を紹介します。
1. スレッドのインスタンス変数を使用する
threading.Thread
を拡張し、返却データをインスタンス変数として保存します。以下にその例を示します。
from threading import Thread
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
このクラスを使用すると、スレッドのjoin()
メソッドがターゲット関数の戻り値を返します。
2. グローバル変数を使用する
もう一つの方法は、グローバル変数を使用することです。スレッドが終了したら、その結果をグローバル変数に保存します。ただし、この方法はスレッドセーフではないため、注意が必要です。
以上がPythonのスレッディングでデータを返却する主な方法です。適切な方法を選択し、効率的なマルチスレッディングを実現しましょう。