Python:有线程安全版本的deque吗?

Python:有线程安全版本的deque吗?,python,multithreading,collections,thread-safety,deque,Python,Multithreading,Collections,Thread Safety,Deque,我有一个线程程序,由消费者类和生产者类组成。目前,我在实现中使用Fifoqueue.queue,其中生产者将数据放在队列末尾,消费者获取数据 但是,我想添加一个功能,如果需要,消费者可以将其获取的项目放回到队列的前面(这样,获取返回的下一个项目就是刚刚添加的项目,就像在堆栈中一样) 我知道这在deques中是可能的,但我已经读到它们对于append()和popleft()来说是线程安全的。出于上述目的,我还需要使用appendleft() 是否存在具有deque功能的线程安全数据结构?如果没有,

我有一个线程程序,由
消费者
类和
生产者
类组成。目前,我在实现中使用Fifo
queue.queue
,其中生产者
将数据放在队列末尾,消费者
获取数据

但是,我想添加一个功能,如果需要,
消费者
可以
将其
获取的项目放回到
队列
的前面(这样,
获取
返回的下一个项目就是刚刚添加的项目,就像在堆栈中一样)

我知道这在
deque
s中是可能的,但我已经读到它们对于
append()
popleft()
来说是线程安全的。出于上述目的,我还需要使用
appendleft()


是否存在具有
deque
功能的线程安全数据结构?如果没有,我是否可以在每次使用
appendleft
时都使用自己的锁,从而使
deque
线程安全

虽然一些
deque
功能不是线程安全的,但您应该尝试这样做

发件人:

deque支持线程安全、高效的内存从deque的任一侧添加和弹出

德克是这里的作者

  • 你感兴趣的操作都是原子的
  • 唯一的非原子操作是:remove()、index()、count和clear(),这是由于可以进行纯python回调的相等性测试,或者是由于可以触发任意python代码的decrefs
希望这有帮助:-)