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