【问题标题】:How do I update a variable passed onto a thread?如何更新传递给线程的变量?
【发布时间】:2016-07-23 12:59:51
【问题描述】:

我有一个运行线程的主类。我想将一个变量传递给该线程,然后全局更新它。这可能吗?

主类:

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'

当我运行 Main 类时,输出仍然是“旧参数”。

【问题讨论】:

  • subThread.run 中,你并没有改变param,而是self.param,所以它没有做你认为它应该做的事情。

标签: python multithreading pass-by-reference python-multithreading


【解决方案1】:

你只是改变了self.param,子线程实例的变量,而不是全局变量param

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


if __name__ == '__main__':
    Main()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2020-09-22
    相关资源
    最近更新 更多