一个线程下,无论创建多少个类,都没法实现并发,只是可以让数据不抢占资源,执行是先后顺序。只有创建不同的线程才能使实现并发。
如果你在 同一个线程 下实例化 A
类两次,生成两个不同的对象(如 a1
和 a2
),那么它们的 实例变量(成员变量)是隔离的,默认情况下不会互相影响。
如果A中有个方法 处理时间很长 譬如是parseAudio,会影响B的输出
class A:
def __init__(self, name):
self.name = name # 实例变量(隔离)
self.data = [] # 实例变量(隔离)
a1 = A("obj1")
a2 = A("obj2")
a1.data.append(1)
a2.data.append(2)
print(a1.data) # 输出: [1] (a2 不影响 a1)
print(a2.data) # 输出: [2] (a1 不影响 a2)
这个时候就需要使用多线程
import threading
class A:
def parseAudio(self):
import time
time.sleep(10)
print("A: parseAudio done")
def output(self):
print("B: output")
a = A()
b = A()
# 在两个独立线程中运行
thread1 = threading.Thread(target=a.parseAudio)
thread2 = threading.Thread(target=b.output)
thread1.start()
thread2.start()
thread1.join()
thread2.join()