threading 专递类对象

发布时间 2023-07-14 12:28:32作者: freedragon

import threading

class MyClass:
def __init__(self, name):
self.name = name

def my_method(self):
print(f"Hello from {self.name}!")

def my_thread_function(obj):
obj.my_method()

# 创建 MyClass 的实例
my_object = MyClass("MyObject")

# 创建线程并传递对象
my_thread = threading.Thread(target=my_thread_function, args=(my_object,))
my_thread.start()
my_thread.join()
```

在上面的代码中,我们首先定义了一个`MyClass`类,它有一个`my_method`方法,用于打印一个问候语。接下来,我们创建了一个`MyClass`的实例`my_object`,并将其作为参数传递给`my_thread_function`函数。`my_thread_function`函数接收一个参数`obj`,它是我们传递的对象。在函数中,我们调用`obj.my_method()`来执行对象的方法。

最后,我们创建了一个线程`my_thread`,将`my_thread_function`作为目标函数,并将`my_object`作为参数传递给线程。我们启动线程,并使用`join`方法等待线程完成。

请注意,在将对象传递给线程时,我们必须将其作为参数传递给线程函数。如果我们将对象存储在全局变量中,则线程可能无法访问该对象,因为线程和主线程是并发运行的。因此,最好将对象作为参数传递给线程函数。

希望这可以帮助你了解如何在Python中将对象传递给线程,并在线程中调用其方法。