Python中如何实现线程安全的双端队列

2023-04-11 00:00:00 线程 队列 如何实现

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())  # 皮蛋编程

相关文章