Python:有线程安全版本的deque吗?
我有一个线程程序,由Python:有线程安全版本的deque吗?,python,multithreading,collections,thread-safety,deque,Python,Multithreading,Collections,Thread Safety,Deque,我有一个线程程序,由消费者类和生产者类组成。目前,我在实现中使用Fifoqueue.queue,其中生产者将数据放在队列末尾,消费者获取数据 但是,我想添加一个功能,如果需要,消费者可以将其获取的项目放回到队列的前面(这样,获取返回的下一个项目就是刚刚添加的项目,就像在堆栈中一样) 我知道这在deques中是可能的,但我已经读到它们对于append()和popleft()来说是线程安全的。出于上述目的,我还需要使用appendleft() 是否存在具有deque功能的线程安全数据结构?如果没有,
消费者
类和生产者
类组成。目前,我在实现中使用Fifoqueue.queue
,其中生产者将数据放在队列末尾,消费者获取数据
但是,我想添加一个功能,如果需要,消费者
可以将其获取的项目放回到队列
的前面(这样,获取
返回的下一个项目就是刚刚添加的项目,就像在堆栈中一样)
我知道这在deque
s中是可能的,但我已经读到它们对于append()
和popleft()
来说是线程安全的。出于上述目的,我还需要使用appendleft()
是否存在具有deque
功能的线程安全数据结构?如果没有,我是否可以在每次使用appendleft
时都使用自己的锁,从而使deque
线程安全 虽然一些deque
功能不是线程安全的,但您应该尝试这样做
发件人:
deque支持线程安全、高效的内存从deque的任一侧添加和弹出
德克是这里的作者
- 你感兴趣的操作都是原子的
- 唯一的非原子操作是:remove()、index()、count和clear(),这是由于可以进行纯python回调的相等性测试,或者是由于可以触发任意python代码的decrefs李>
希望这有帮助:-)