Python3尝试访问在线程调用中实例化的类对象

1 投票
1 回答
29 浏览
提问于 2025-04-13 12:26

我在用Python3工作,创建了一个管理一些表格的类。这个类是通过调用threading.Thread()来实例化的,里面有一个“run”函数,这个函数会被线程机制调用,从而实例化这个类。现在,这个函数永远不会退出,因为它运行了一些tk代码,并且处于一个无尽的循环中。因此,类实例化的返回值是无法获取的。

key_gui = threading.Thread(target=key_gui_run, args=(key_name_list, list, sendQueue, ))
key_gui.start()

被调用的函数其实很简单:

 def key_gui_run(large_list, small_list, queue):
   myObject = MyClass(large_list, small_list,  queue)

当系统运行时,由MyClass创建的对象会处理一些数据。我想在这个对象中调用一个方法来获取这些数据。然而,线程类的要求不允许我获取这个对象的引用。这是因为key_gui_run()永远不会退出,所以myObject的值永远无法获取。

有没有什么标准的方法来解决这个困境?我是不是对Python类有什么不明白的地方?我对这门语言还是个新手。

任何回答都非常感谢。

谢谢!!

1 个回答

1

为什么你不能这样做呢?

myObject = MyClass(name_list, list, sendQueue)
key_gui = threading.Thread(target=key_gui_run, args=(myObject,))
key_gui.start()
    # myObject is accessible from here.
    ...

def key_gui_run(myObject):
    # and also, from here.
    ...

撰写回答