我需要一个队列,多个线程可以把东西放进去,多个线程可以从中读取。
Python至少有两个队列类,queue。Queue和collections.deque,前者似乎在内部使用后者。两者在文档中都声称是线程安全的。
然而,Queue文档还声明:
Collections.deque是另一种选择 实现无界队列 使用快速原子append()和 Popleft()操作 需要锁定。
我想我不太理解:这是否意味着deque不是完全线程安全的?
如果是的话,我可能无法完全理解这两个类的区别。我可以看到Queue增加了阻塞功能。另一方面,它失去了一些deque特性,比如对in-operator的支持。
直接访问内部deque对象是
Queue().deque . x
线程安全?
另外,当deque已经是线程安全的时候,为什么Queue还为它的操作使用互斥量呢?