1

2 つのスレッドがあり、両方のスレッドが一連の計算を実行して結果を取得します。問題は、ある時点で両方のスレッドの計算が、もう一方のスレッドで得られた結果を必要とすることです。継承を考えましたが、あるスレッドから別のスレッドに値を渡すことしかできませんでした。グローバル変数を使用せずに 2 つのスレッド間で値を渡すにはどうすればよいですか?

私はこのようなことをしたいです。

class first(threading.Thread):
    def __init__(self, flag, second):
    ##rest of the class first##

class second(threading.Thread):
    def __init__(self, flag, first):
    ##rest of the class second##

def main():
    flag=threading.Condition()
    First=first(flag,Second)
    First.start()
    Second=second(flag,First)
    Second.start()

上記を実行するとエラーが発生します。

4

1 に答える 1

3

Queue モジュールを使用できます: 各スレッドにQueue.Queueオブジェクトを与えます。次に、各スレッドは計算を行い、結果を他のスレッドのキューに入れ、他のスレッドの結果が到着するまで独自のキューをリッスンします。

最初に結果を投稿してから、他のスレッドの結果を待つようにしてください。そうしないと、スレッドがデッドロックしてしまいます。

于 2012-08-28T13:50:45.230 に答える