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

你只是改變了self.param,子線程實例,而不是全局變量param

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


if __name__ == '__main__': 
    Main() 
在`subThread.run`
+0

非常感謝! –