Queue,Queue 用于多线程之间,无需lock的通信;
collections.deque 用于实现数据结构中的queue, 或两端都可以实现queue的功能。
Queue.Queue
andcollections.deque
serve different purposes. Queue.Queue is intended for allowing different threads to communicate using queued messages/data, whereascollections.deque
is simply intended as a datastructure. That's whyQueue.Queue
has methods likeput_nowait()
,get_nowait()
, andjoin()
, whereascollections.deque
doesn't.Queue.Queue
isn't intended to be used as a collection, which is why it lacks the likes of thein
operator.It boils down to this: if you have multiple threads and you want them to be able to communicate without the need for locks, you're looking for
Queue.Queue
; if you just want a queue or a double-ended queue as a datastructure, usecollections.deque
.Finally, accessing and manipulating the internal deque of a
Queue.Queue
is playing with fire - you really don't want to be doing that.