Python中如何实现线程安全的双端队列
Python中可以使用内置的queue模块中的deque类来创建双端队列,并使用线程锁来保证并发访问时的线程安全。
下面是一个示例代码:
from collections import deque import threading class SafeDeque: def __init__(self): self.deque = deque() self.lock = threading.Lock() def append_left(self, item): with self.lock: self.deque.appendleft(item) def append_right(self, item): with self.lock: self.deque.append(item) def pop_left(self): with self.lock: return self.deque.popleft() def pop_right(self): with self.lock: return self.deque.pop()
在上面的示例中,我们创建了SafeDeque类来封装deque,同时使用lock来保证并发访问时的线程安全。在每个操作中,我们使用with语句获得锁,然后执行相应的deque操作。
使用示例:
q = SafeDeque() q.append_left("pidancode.com") q.append_right("皮蛋编程") print(q.pop_left()) # pidancode.com print(q.pop_right()) # 皮蛋编程
相关文章