并发问题2

原创
04/05 02:50
阅读数 117

一个线程下,无论创建多少个类,都没法实现并发,只是可以让数据不抢占资源,执行是先后顺序。只有创建不同的线程才能使实现并发。

如果你在 同一个线程 下实例化 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()

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部