如何防止类构造器阻塞其他线程?



我是一个线程新手,所以这个问题可能太基本了。我有两个类A和b,如果我把它们各自的实例和方法放在两个线程中,如下所示:

from threading import Thread
from time import sleep
class A:
def __init__(self):
sleep(10)
print('class A __init__ awake')
def method_a(self):
sleep(10)
print('method_a awake')
class B:
def __init__(self):
sleep(1)
print('class B __init__ awake')
def method_b(self):
sleep(5)
print('method_b awake')

thread_a = Thread(target=A().method_a)
thread_b = Thread(target=B().method_b)
thread_a.start()
thread_b.start()

我的预期结果是:

class B __init__ awake
method_b awake
class A __init__ awake
method_a awake

但是我得到了:

class A __init__ awake
class B __init__ awake
method_b awake
method_a awake

我做错了什么?是我将方法传递给Thread实例的方式还是更基本的东西?谢谢。

最直接的方法是将对象创建和函数执行包装在一个函数中,该函数将在另一个线程中完全执行。

thread_a = Thread(target=lambda: A().method_a())
thread_b = Thread(target=lambda: B().method_b())

最新更新