Python3尝试访问在线程调用中实例化的类对象
我在用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.
...