0

スレッドを実行するメインクラスがあります。そのスレッドに変数を渡して、それをグローバルに更新したいと思います。これは可能ですか?スレッドに渡された変数を更新するにはどうすればよいですか?

メインクラス:

import subThread 

param = 'old param' 

def Main(): 
    global param 
    s = subThread.subThread(param) 
    s.start() 
    s.join() 
    print(param) 


if __name__ == '__main__': 
    Main() 

サブスレッド:

import threading 

class subThread(threading.Thread): 

    param = '' 

    def __init__(self, param): 
     threading.Thread.__init__(self) 
     self.param = param 

    def run(self): 
     self.param = 'new param' 

私はメインクラスを実行すると、出力はまだ '古いのparam' です。

+2

を、あなたは' param'を変更していないが、代わりに 'self.param'それで、あなたがすると思われることはしていません。 –

答えて

2

あなただけのサブスレッドインスタンスの変数ではなく、グローバル変数paramself.paramを変更。subThread.run` `で

def Main(): 
    global param 
    s = subThread.subThread(param) 
    s.start() 
    s.join() 
    param = s.param 
    print(param) 


if __name__ == '__main__': 
    Main() 
+0

ありがとう! –

関連する問題