优化思路
- 线程安全的数据结构:使用线程安全的数据结构来存储类的属性,例如
queue.Queue
用于存储需要处理的数据,避免多线程同时访问和修改数据导致的数据不一致问题。
- 锁机制:对于不能使用线程安全数据结构的属性,使用
threading.Lock
来保护对这些属性的访问。确保在同一时间只有一个线程能够访问和修改这些属性。
- 多线程处理逻辑:将
DataProcessor
类中的计算密集型方法改为多线程执行,利用threading.Thread
创建线程,并合理分配任务。
- 封装保护:对于只应在类内部使用的属性和方法,依然使用双下划线前缀(
__
)进行命名,保持封装特性。
关键代码示例
import threading
from queue import Queue
class DataProcessor:
def __init__(self):
self.__private_attribute = 0
self.data_queue = Queue()
self.lock = threading.Lock()
def __private_method(self):
# 类内部使用的方法
pass
def add_data(self, data):
self.data_queue.put(data)
def process_data(self):
while not self.data_queue.empty():
data = self.data_queue.get()
# 这里进行实际的数据处理
with self.lock:
self.__private_attribute += 1
self.__private_method()
def worker(proc):
proc.process_data()
if __name__ == "__main__":
processor = DataProcessor()
for i in range(10):
processor.add_data(i)
threads = []
for _ in range(3):
t = threading.Thread(target=worker, args=(processor,))
threads.append(t)
t.start()
for t in threads:
t.join()